我目前正在遵循苹果文档。这是我的问题:
class Person {
let name: String
init(name: String) {
self.name = name
println("\(name) is being initialized")
}
deinit {
println("\(name) is being deinitialized")
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var reference1: Person?
var reference2: Person?
var reference3: Person?
reference1 = Person(name: "John Appleseed")
// prints "John Appleseed is being initialized
reference2 = reference1
reference3 = reference1
reference1 = nil
reference2 = nil
}
}
在reference1
等于nil
之后,ARC会释放该实例并打印"John Appleseed is being deinitialized"
难道不应该在reference3 = nil
之后释放吗?
deinit
实际发生的精确时刻的?我期望它会在方法返回的同时被调用(绝对不会晚一会儿)。由于某种优化,它可能会早些被调用,但它绝对不会在方法返回后停留。 - nhgrifviewDidLoad
方法返回时,就会被设置为nil
。 - nhgrif