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

时间:2016-03-29 16:06:52

标签: swift2 automatic-ref-counting

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

我有下面的代码,调用denit方法,但我仍然将我的引用3 var设置为nil,任何人都可以解释为什么要调用denit?

in 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

1 个答案:

答案 0 :(得分:0)

我会猜测,因为reference3是一个局部变量,而不是实例变量,所以当方法返回时,它会超出范围。

而且BTW那个人的名字是John Appleseed,而不是John Apple:)