iOS面試復習2——ARC

一、ARC下@property修飾符

strong : 用于OC對象, 相當于MRC中的retain

weak : 用于OC對象, 相當于MRC中的assign

assign : 用于基本數據類型, 跟MRC中的assign一樣


二、ARC中內存管理

只要還有一個強指針變量指向對象,對象就會保持在內存中

1.ARC下單對象內存管理

1)ARC下,所有的指針都是強指針

2)ARC, A對象想擁有B對象, 那么就需要用一個強指針指向B對象

3)A對象不用B對象了, 什么都不需要做, 編譯器會自動幫我們做


2.ARC下多對象內存管理(strong ,weak, assign)

// 在ARC中保存一個對象用strong, 相當于MRC中的retain

@property(nonatomic, strong)Dog *dog;

// 在ARC中如果保存對象不要用assign, 用weak

// assign是專門用于保存基本數據類型的, 如果保存對象用weak

@property(nonatomic, weak)Person *owner;


3.ARC循環引用問題

ARC和MRC一樣, 如果A擁有B, B也擁有A, 那么必須一方使用弱指針

也就是說 一端用strong ,一端用weak


4.ARC的原理

當ARC開啟時,編譯器將自動在代碼合適的地方插入retain, release和autorelease,而作為程序猿,完全不需要擔心編譯器會做錯(除非開發者自己錯用ARC了)。

5.ARC優點

完全消除了手動管理內存的煩瑣, 讓程序猿更加專注于app的業務

基本上能夠避免內存泄露

有時還能更加快速,因為編譯器還可以執行某些優化


三、ARC和MRC混編

1.ARC模式下如何兼容非ARC的類?

答:找到project->targets->Bulid Phases->Compiles Sources->找到相關文件右擊右邊Compiler Flags添加相關代碼

給相關文件添加一端代碼,

轉變為非ARC -fno-objc-arc

轉變為ARC的, -f-objc-arc (不常用)


四、如何操作Xcode將MRC轉ARC?

答:Edit->Convert->To Objective ARC

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容