弱和隐含解开奇怪的行为

时间:2017-03-14 10:33:35

标签: swift

我有以下虚拟课程:

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)

任何人都知道为什么会这样?

0 个答案:

没有答案