我正在嘗試使用 ARC 及其處理記憶體釋放的方式。如果我有一些課程:
class Person {
var name: String = ""
var age: Int = 0
init(name: String, age: Int) {
self.name = name
self.age = age
}
deinit {
print("Person \(name) has been deallocated")
}
}
class MyViewController: UIViewController {
var person = Person(name: "Steve", age: 85)
}
我需要擔心為這個人騰出空間還是 ARC 處理它?我需要宣告一個deinitinMyViewController嗎?
uj5u.com熱心網友回復:
一旦參考物件本身被解除分配,ARC 就會為您處理取消初始化和解除分配。引自https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html:
…ARC 跟蹤當前參考每個類實體的屬性、常量和變數的數量。只要至少一個對該實體的活動參考仍然存在,ARC 就不會釋放該實體。
...每當您將類實體分配給屬性、常量或變數時,該屬性、常量或變數都會對該實體進行強參考。該參考被稱為“強”參考,因為它牢牢控制著該實體,并且只要該強參考仍然存在,就不允許它被釋放。
您的代碼也證明了這一點:如果我將您的代碼復制到操場并添加MyViewController()以創建類的實體,我會Person Steve has been deallocated在程式退出之前在控制臺輸出中看到。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/401327.html
