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 :)
我指的是来自 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 :)