<div dir="ltr"><div class="gmail_default" style="font-family:georgia,serif">I think you are right on ` lifetime guaranteed to be around until the method call completes`. But`[unowned self]` released the retain manually in your code. Just removing `[unowned self]` part, you code will work.</div><div class="gmail_default" style="font-family:georgia,serif"><br></div><div class="gmail_default" style="font-family:georgia,serif">Zhaoxin</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 22, 2017 at 3:18 AM, Marco S Hyman via swift-users <span dir="ltr">&lt;<a href="mailto:swift-users@swift.org" target="_blank">swift-users@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">&gt; The following code crashes:<br>
&gt;<br>
&gt; class Demo {<br>
&gt;   var value = 0<br>
&gt;   lazy var increment: (Int) -&gt; Void = { [unowned self] by in<br>
&gt;     self.value += by<br>
&gt;     print(self.value)<br>
&gt;   }<br>
&gt;  }<br>
&gt;<br>
&gt; Demo().increment(3)<br>
&gt; error: Playground execution aborted: error: Execution was interrupted, reason: EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0).<br>
<br>
</span>value is not a static/class variable.   Without an instance of Demo it does not exist.  This seems to work.<br>
<br>
class Demo {<br>
  static var value = 0<br>
<span class="">  lazy var increment: (Int) -&gt; Void = { [unowned self] by in<br>
</span>    value += by<br>
    print(value)<br>
  }<br>
}<br>
<br>
______________________________<wbr>_________________<br>
swift-users mailing list<br>
<a href="mailto:swift-users@swift.org">swift-users@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-users" rel="noreferrer" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-users</a><br>
</blockquote></div><br></div>