<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 Dec 15, 2015, at 3:18 PM, Drew Crawford &lt;<a href="mailto:drew@sealedabstract.com" class="">drew@sealedabstract.com</a>&gt; 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="">Big -1<div class=""><br class=""></div><div class="">Consider the following</div><div class=""><br class=""></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class="">//somewherelse.swift</div><div class=""><br class=""></div><div class="">var strongReference: Foo! = nil</div><div class="">func evil(foo: Foo) {</div><div class="">&nbsp; &nbsp; strongReference = foo</div><div class="">}</div></blockquote><div class=""><br class=""></div><div class="">and</div><div class=""><br class=""></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class="">//Foo.swift</div><div class="">class Bar {</div><div class="">&nbsp; &nbsp; var f: Foo</div><div class="">&nbsp; &nbsp; dispatch_async(queue) { [strong self] in</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;evil(f)</div><div class="">&nbsp; &nbsp; }</div><div class="">}</div></blockquote><div class=""><br class=""></div>IMHO, `evil(self.f)` is *far* better and *far* more likely to look like a bug. &nbsp;I feel so strongly about this that I would take the extraordinary step of banning `strong self` from my codebase. &nbsp;I have spent waaaaaaay too much time playing "spot func evil".</div></div></blockquote></div><br class=""><div class="">Can you explain what is so evil about func evil() when it is called from an asynchronously-executed closure? I don't see an obvious bug here.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">--&nbsp;</div><div class="">Greg Parker &nbsp; &nbsp;<a href="mailto:gparker@apple.com" class="">gparker@apple.com</a> &nbsp; &nbsp; Runtime Wrangler</div><div class=""><br class=""></div><div class=""><br class=""></div></body></html>