Swift 中的 ARC 2.2 deinit 被调用 - 仍然有一个参考

ARC in Swift 2.2 deinit getting called - still having one reference

我指的是来自 developer.apple.com 的 swift 2.2 中的 ARC(参考:- link

我有以下代码,调用了 denit 方法,但我的引用 3 var 仍未设置为 nil,谁能解释一下为什么调用 denit 方法?。

在 person.swift class

class Person {
    let name: String
    init(name: String) {
        self.name = name
        print("\(name) is being initialized")
    }
    deinit {
        print("\(name) is being deinitialized")
    }
}

在我的视图控制器中

   var reference1 : Person?
    var reference2 : Person?
    var reference3 : Person?

    reference1 = Person(name:"John Apple")

    reference2 = reference1
    reference3 = reference1

    reference1 = nil
    reference2 = nil

输出:-

John Apple is being initialized
John Apple is being deinitialized

我会冒险猜测,因为 reference3 是一个局部变量,而不是实例变量,所以当方法 returns.

时它会超出范围

顺便说一句,那个人的名字是 John Appleseed,而不是 John Apple :)