1. 什么是弱引用和無主引用?
弱引用、無主引用: 允許引用環(huán)中的一個實(shí)例引用另外一個實(shí)例,但不是強(qiáng)引用。
2. 弱引用
弱引用 weak 對于生命周期中引用會變?yōu)閚il的實(shí)例,使用弱引用;
聲明屬性或者變量的時候,關(guān)鍵字weak表明引用為弱引用;
弱引用不會增加實(shí)例的引用計數(shù),因此不會阻止ARC銷毀被引用的實(shí)例。這種特性使得引用不會變成強(qiáng)引用;
弱引用只能聲明為變量類型,因?yàn)檫\(yùn)行時它的值可能改變;弱引用絕對不能聲明為常量。
因?yàn)槿跻每梢詻]有值,所以聲明弱引用的時候必須是可選類型的。
3. 無主引用
無主引用 unowned 對于初始化賦值之后引用再也不會賦值為nil的實(shí)例,使用無主引用;
無主引用默認(rèn)始終有值;所以只能定義為非可選值類型;在屬性、變量前添加unowned關(guān)鍵字,可以聲明一個無主引用;
非可選類型變量不能賦值為nil,因此當(dāng)實(shí)例被銷毀的時候,ARC無法將引用賦值為nil;
當(dāng)實(shí)例被銷毀時,視圖訪問實(shí)例的無主引用會觸發(fā)運(yùn)行時錯誤;因此使用無主引用時請確保引用始終指向一個未銷毀的實(shí)例;