> > lifetime guaranteed to be around until the method call completes
AFAIK, this is true. However, in this case, it's not a method call. The lifetime is only guaranteed until getter:increment completes. Demo().increment(3) |--------------| lifetime 2017-02-22 3:00 GMT+09:00 Ray Fix via swift-users <swift-users@swift.org>: > 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 > >
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users