我希望self不为nil,并且我肯定会在执行块的过程中将其设为nil。那么,为什么要明确指定[无主的自我]?
object.executeBlock {
date = self.lastModified
}
Run Code Online (Sandbox Code Playgroud)
与
object.executeBlock { [unowned self] in
date = self.lastModified
}
Run Code Online (Sandbox Code Playgroud)
编辑:好吧,我正在减票,所以让我们再试一次。问:比方说我有问题。那个问题是我想防止参考周期。我有两个选择。我可以使用[无主的自我],也可以使用[弱的自我]。因此,我的问题是:从这两个选项中,为什么我会选择[无主的自我]?为什么不每次都选择[弱自我]?
小智 5
“语言指南声称,如果闭包和包含对象相互引用,并且将同时销毁它们,则您应该使用unown。大概是为了避免安全地删除将要反分配的对象中的弱引用的代价”。
http://www.russbishop.net/swift-capture-lists
因此,[unown self]使self成为一个隐式解包的可选对象,以方便您自己不解包它,而如果它实际上是nil,则可能会发生崩溃。
| 归档时间: |
|
| 查看次数: |
1345 次 |
| 最近记录: |