在WWDC 2014会议403 Intermediate Swift和transcript中,有以下幻灯片

演讲者说,在这种情况下,如果我们不在[unowned self]那里使用它,将会导致内存泄漏。这是否意味着我们应该始终使用[unowned self]内部闭包?
在Swift Weather应用程序的ViewController.swift的第64行,我没有使用[unowned self]。但是我通过使用@IBOutlet诸如self.temperature和来更新UI self.loadingIndicator。可能没问题,因为@IBOutlet我定义的全部都是weak。但是为了安全起见,我们应该一直使用[unowned self]吗?
class TempNotifier {
var onChange: (Int) -> Void = {_ in }
var currentTemp = 72
init() {
onChange = { [unowned self] temp in
self.currentTemp = temp
}
}
}
onChange应该是一个[weak self]闭包,因为它是一个公共(内部,但仍然是)属性,因此另一个对象可以获取并存储闭包,并保持TempNotifier对象不存在(如果using对象onChange直到TempNotifier通过自己对(TempNotifier)的弱引用看到s 消失后才放开闭包。如果var onChange …是的private var onChange …话[unowned self]将是正确的。 我对此不是100%肯定的;如果我错了,请有人纠正我。
[]?定义空数组相同 我在Apple文档中找不到解释。
{}是空闭包(闭包的实例),默认设置(不执行任何操作),(Int) -> Void是闭包定义。
