1
我想更好地了解ARC和正在使用Apples DocumentationARC弱VAR斯威夫特(未封闭)
通过的第一个例子去我没有得到期望的结果,苹果的状态; “因为弱引用并没有对它所指的实例持有强大的保留,所以可能会将该实例解除分配,而弱引用仍然指向该实例。因此,ARC会自动将弱引用设置为零,它指的是被释放。“
林XCode中8.3.2
import UIKit
class Person {
let name: String
init(name: String) { self.name = name }
var apartment: Apartment?
deinit { print("\(name) is being deinitialized") }
}
class Apartment {
let unit: String
init(unit: String) { self.unit = unit }
weak var tenant: Person?
deinit { print("Apartment \(unit) is being deinitialized") }
}
var john: Person?
var unit4A: Apartment?
john = Person(name: "John Appleseed")
unit4A = Apartment(unit: "4A")
john!.apartment = unit4A
unit4A!.tenant = john
john = nil //This prints "John Appleseed is being deinitialized" (as expected)
unit4a?.tenant?.name //This shows "John Appleseed" (expected nil)
unit4a = nil //Prints "Unit4a is being deinitialized" (as expected)
我明白,这阻止了有力的参考周期,这样既可以deinitialized但我不理解为什么unit4a保持对租户参考使用操场?