[swift-users] unowned self in closure in a playground

Marco S Hyman marc at snafu.org
Tue Feb 21 13:18:03 CST 2017


> 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).

value is not a static/class variable.   Without an instance of Demo it does not exist.  This seems to work.

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



More information about the swift-users mailing list