記憶體管理
何時使用 weak-keyword:
如果在持有引用的物件的生命週期內可以釋放引用的物件,則應使用 weak
關鍵字。
何時使用 unowned-keyword:
如果在引用引用的物件的生命週期內不期望引用物件被釋放,則應使用 unowned
關鍵字。
陷阱
一個常見的錯誤是忘記建立物件的引用,這些物件在函式結束後需要繼續存在,比如位置管理器,運動管理器等。
例:
class A : CLLocationManagerDelegate
{
init()
{
let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.startLocationUpdates()
}
}
此示例將無法正常工作,因為在初始化程式返回後取消分配位置管理器。正確的解決方案是建立一個強引用作為例項變數:
class A : CLLocationManagerDelegate
{
let locationManager:CLLocationManager
init()
{
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.startLocationUpdates()
}
}