-
解決實例之間的循環(huán)強引用
- 可以通過定義類之間的關(guān)系為弱引用或無主引用,以替代強引用拯坟,從而解決循環(huán)強引用的問題眶诈。
- 對于生命周期中會變?yōu)?code>nil的實例涨醋,使用弱引用,關(guān)鍵字
weak
。 - 對于初始化賦值后再也不會被賦值為
nil
的實例逝撬,使用無主引用浴骂。 - 弱引用必須被聲明為變量,表明其值能在運行時被修改宪潮。弱引用不能被聲明為常量溯警。
- 無主引用是永遠有值的趣苏,因此,無主引用總是被定義為非可選類型梯轻。關(guān)鍵字
unowned
食磕。
-
解決閉包引起的循環(huán)強引用
- 在定義閉包時同時定義捕獲列表作為閉包的一部分,這樣可以解決閉包和類實例之間的循環(huán)強引用喳挑。
- 在閉包和捕獲的實例總是互相引用并且總是同時銷毀時彬伦,將閉包內(nèi)的捕獲定義為無主引用。
- 在被捕獲的引用可能會變?yōu)?code>nil時伊诵,將閉包內(nèi)的捕獲定義為弱引用单绑。