> On 5 Jul 2016, at 03:47, Zhao Xin <[email protected]> wrote:
> 
> No, it is not a bug.
> 
> For a closure, you have to call self explicitly unless the closure is mark as 
> @noescape. Also, in this situation, self is not unowned, as the closure is 
> not stored, it ran and released. Below, is a situation that you need use 
> unowned self. Here the closure is stored in variable d instead of running and 
> releasing.
> 
>     lazy var d:()->Int = { [unowned self] in
>         return self.a*self.b
>     }
> 
> Zhaoxin

In this specific case, when you are initialising from a closure, there is no 
need to make the capture of ‘self’ explicit and it’s totally safe for it to be 
unowned. You can’t invoke the closure without going through a valid instance, 
and that instance always owns the closure and never the other way around.
_______________________________________________
swift-users mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to