<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Feb 22, 2016, at 3:11 PM, Kevin Lundberg <<a href="mailto:kevin@klundberg.com" class="">kevin@klundberg.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=us-ascii" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">I personally use the existing behavior in some of my code, by providing the reference to the method directly to a method/function that takes a closure as a parameter. A modified excerpt from my code:</div><div class=""><br class=""></div><div class=""><font face="Courier New" class=""> let observer = <span class="">NSNotificationCenter</span><span class="">.defaultCenter().addObserverForName(LoginSuccess, object: </span><span class="">nil</span><span class="">, queue: </span><span class="">nil</span><span class="">, usingBlock: weakify(self, </span><span class="">self</span><span class="">.</span><span class="">dynamicType</span><span class="">.userDidLogin))</span></font></div><div class=""><span class=""><br class=""></span></div><div class="">(Note: This usage normally would lead to a retain cycle, but I wrap the method reference in this weakify() function which handles weakly applying self to the returned method reference.)</div><div class=""><br class=""></div><div class="">Un-currying method references would make this pattern harder to apply, so if there was a way to resolve this behavior without removing the current flexibility that the curried behavior offers, I would prefer that. Un-currying mutating methods only would be one option, but that seems a bit ugly. </div><div class=""><br class=""></div><div class="">However, if there isn't a way to fix it without changing existing behavior, I'd prefer the un-curried form everywhere to removing static method access outright.</div></div></div></blockquote><br class=""></div><div>If I understand the intent of `weakify` correctly, I think this kind of use case is already pretty severely curtailed by our removing the tuple splat feature, since you can no longer make `weakify` generic across multiple method signatures. Like the tuple splat feature, an explicit variadic splatting feature ought to make this possible for flattened method signatures:</div><div><br class=""></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div>func weakify<Class: class, Args, Result>(instance: Class, method: (Class, Args...) -> Result) -> (Args...) -> Result {</div><div> return {[weak instance] args... in method(instance, args...) }</div><div>}</div></blockquote><br class=""><div class="">-Joe</div></body></html>