Swift2 Swift 2.2 Denit中的ARC被调用-仍有一个引用

Swift2 Swift 2.2 Denit中的ARC被调用-仍有一个引用,swift2,automatic-ref-counting,Swift2,Automatic Ref Counting,我指的是developer.apple.com上swift 2.2中的ARC(参考:-) 我有下面的代码,denit方法被调用了,但是我的reference 3 var没有设置为nil,有人能解释一下为什么denit会被调用吗 当面 class Person { let name: String init(name: String) { self.name = name print("\(name) is being initialized")

我指的是developer.apple.com上swift 2.2中的ARC(参考:-)

我有下面的代码,denit方法被调用了,但是我的reference 3 var没有设置为nil,有人能解释一下为什么denit会被调用吗

当面

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
是一个局部变量,而不是一个实例变量,所以当方法返回时,它超出了范围


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

嗨,特洛伊人……你能粘贴你的代码版本吗?我能在xcode中测试同样的代码运行吗。@Max我不明白你的意思。你想知道为什么物体被释放;没有像这样的坏代码。