[swift-users] unowned self in closure in a playground
Ray Fix
rayfix at gmail.com
Tue Feb 21 12:00:42 CST 2017
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?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20170221/98120513/attachment.html>
More information about the swift-users
mailing list