我有以下虚拟课程:
class Test {
var value: String
init(value: String) {
self.value = value
}
deinit {
print("deinit!")
}
}
我在Swift Playground中有以下代码:
var strongReference: Test? = Test(value: "test")
weak var variable: Test!
variable = strongReference
strongReference = nil
print(variable.value)
此代码实际上可以工作并打印"测试"之后" deinit!"。这对我来说是一个惊喜,因为我期待在这种情况下崩溃。更奇怪的是,下面的代码实际上会产生我正在寻找的崩溃:
var strongReference: Test? = Test(value: "test")
weak var variable: Test! = strongReference
strongReference = nil
print(variable.value)
任何人都知道为什么会这样?