自Xcode 10.2 (Swift 5)起,作用域defer
末尾的语句产生:deinit
作用域结束前的“defer”语句总是立即执行;替换为“do”语句以消除此警告
让我们看一下这个例子:
var foo: String {
didSet {
// smt
}
}
deinit {
defer { <--- Warning
foo = bar
}
}
- 当然,可以通过将代码从观察者移动到方法并显式调用它来消除此警告,但是……</li>
这个警告有什么意义?defer
- 将声明放在 中是否合理deinit
?(例如,能够触发属性的观察者)。