【发布时间】:2018-03-09 01:54:01
【问题描述】:
我正在对此进行测试,看来如果您更改 didSet 中的值,您将不会再收到对 didSet 的调用。
var x: Int = 0 {
didSet {
if x == 9 { x = 10 }
}
}
我可以依靠这个吗?它是否记录在某处?我在 Swift Programming Language 文档中没有看到它。
【问题讨论】:
-
刚刚在 Xcode 8 Playground (Swift 3) 上测试并得到了相同的结果。如果您从
didSet更改属性,didSet将不会再次调用。 -
“我可以依靠这个吗”是的。
-
实际上我的数组上有一个
didSet,最后还有一个defer用于弹出last 元素。猜猜发生了什么?它崩溃了,因为我弹出了所有使我的数组为空的元素,必须在defer中执行if else,所以如果myArray.isEmpty != true,我不会弹出
标签: swift swift3 didset property-observer