一妈嘹、ARC下@property修飾符
strong : 用于OC對象, 相當(dāng)于MRC中的retain
weak : 用于OC對象, 相當(dāng)于MRC中的assign
assign : 用于基本數(shù)據(jù)類型, 跟MRC中的assign一樣
二、ARC中內(nèi)存管理
只要還有一個強(qiáng)指針變量指向?qū)ο笥嬖瑢ο缶蜁3衷趦?nèi)存中
1.ARC下單對象內(nèi)存管理
1)ARC下,所有的指針都是強(qiáng)指針
2)ARC, A對象想擁有B對象, 那么就需要用一個強(qiáng)指針指向B對象
3)A對象不用B對象了, 什么都不需要做, 編譯器會自動幫我們做
2.ARC下多對象內(nèi)存管理(strong ,weak, assign)
// 在ARC中保存一個對象用strong, 相當(dāng)于MRC中的retain
@property(nonatomic, strong)Dog *dog;
// 在ARC中如果保存對象不要用assign, 用weak
// assign是專門用于保存基本數(shù)據(jù)類型的, 如果保存對象用weak
@property(nonatomic, weak)Person *owner;
3.ARC循環(huán)引用問題
ARC和MRC一樣, 如果A擁有B, B也擁有A, 那么必須一方使用弱指針
也就是說 一端用strong ,一端用weak
4.ARC的原理
當(dāng)ARC開啟時,編譯器將自動在代碼合適的地方插入retain, release和autorelease,而作為程序猿,完全不需要擔(dān)心編譯器會做錯(除非開發(fā)者自己錯用ARC了)释树。
5.ARC優(yōu)點
完全消除了手動管理內(nèi)存的煩瑣, 讓程序猿更加專注于app的業(yè)務(wù)
基本上能夠避免內(nèi)存泄露
有時還能更加快速泉唁,因為編譯器還可以執(zhí)行某些優(yōu)化
三雷酪、ARC和MRC混編
1.ARC模式下如何兼容非ARC的類?
答:找到project->targets->Bulid Phases->Compiles Sources->找到相關(guān)文件右擊右邊Compiler Flags添加相關(guān)代碼
給相關(guān)文件添加一端代碼,
轉(zhuǎn)變?yōu)榉茿RC -fno-objc-arc
轉(zhuǎn)變?yōu)锳RC的, -f-objc-arc (不常用)
四捂龄、如何操作Xcode將MRC轉(zhuǎn)ARC?
答:Edit->Convert->To Objective ARC