Swift2 Swift 2.2 Denit中的ARC被调用-仍有一个引用
我指的是developer.apple.com上swift 2.2中的ARC(参考:-) 我有下面的代码,denit方法被调用了,但是我的reference 3 var没有设置为nil,有人能解释一下为什么denit会被调用吗 当面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")
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我不明白你的意思。你想知道为什么物体被释放;没有像这样的坏代码。