ARC

什麼是ARC?spa

ARC的全稱Auto Reference Counting. 也就是自動引用計數。那麼,爲何要有ARC呢?指針

Objective C的引用計數理解起來很容易,當一個對象被持有的時候計數加一,再也不被持有的時候引用計數減一,當引用計數爲零的時候,說明這個對象已經無用了,則將其釋放。code

ARC :ARC 是編譯器特性,當編譯器發現retain或者alloc,自動幫咱們插入內存管理代碼:release,對象

引用計數分爲兩種:blog

  • 手動引用計數(MRC)內存

  • 自動引用計數(ARC)編譯器

好比以下ARC代碼:it

NSObject * obj;
{
    obj = [[NSObject alloc] init]; //引用計數爲1
}
NSLog(@"%@",obj);

等同於以下MRC代碼內存管理

NSObject * obj;
{
    obj = [[NSObject alloc] init]; //引用計數爲1
    [obj relrease]
}
NSLog(@"%@",obj);

 

ARC它的判斷準則:只要沒有強指針指向對象,對象就會被釋放編譯

    指針分兩種:

 

             強指針:默認狀況下都是強指針,__stong(雙下劃線)

             弱指針:__weak

             __weak Person *p = []; NSLog(@"%@",p);  //  錯誤的寫法

 

兩端循環引用的時候:

   ARC:

       一端用strong,另外一端weak

   非ARC:

       一端用retain,另外一端assign

ARC :總結

     1>不容許調用release,retain,retainCount

 

     2>能夠重寫dealloc,可是不能夠調用[super dealloc];

 

     3>@property參數

 

     *strong:成員變量是強指針(適用於OC對象,默認的)

 

     *weak:成員變量是弱指針(做用跟assign同樣)(適用於OC對象)

 

     *assign:非對象

相關文章
相關標籤/搜索