Hi,

The following code crashes:

class Demo {
  var value = 0
  lazy var increment: (Int) -> Void = { [unowned self] by in
    self.value += by
    print(self.value)
  }
 }

Demo().increment(3)
error: Playground execution aborted: error: Execution was interrupted, reason: 
EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0).

However if I call it this way:

do {
  let demo = Demo()
  demo.increment(3)
}

All is well.  This breaks my mental model of lifetime guaranteed to be around 
until the method call completes.
Is it me that is wrong or the playground.  Is the second way working just by 
luck?
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to