IOS--內存管理 (retain, assign,copy, strong,weak)

引用計數:爲了方便管理內存,oc引入了飲用計數,基本原則:誰建立,誰釋放 !ios

   目的:IOS的對象都繼承於NSObject, 該對象有一個方法:retainCount ,內存引用計數。 引用計數在不少技術都用到: window下的COM組件,多線程的信號量,讀寫鎖,思想都同樣。多線程


   一:宏觀理解:atom

      

       備註:spa

   @property的參數分爲三類,也就是說參數最多能夠有三個,中間用逗號分隔,每類參數能夠從上表三類參數中人選一個。若是不    進行設置或者只設置其中一類參數,程序會使用三類中的各個默認參數,默認參數:(atomic,readwrite,assign)線程

  通常狀況下若是在多線程開發中一個屬性可能會被兩個及兩個以上的線程同時訪問,此時能夠考慮atomic屬性,不然建議使用   nonatomic,不加鎖,效率較高;readwirte方法會生成getter、setter兩個方法,若是使用readonly則只生成getter方法;指針



  二          關鍵詞:orm


                 (1)  retain : 表示持有特性,setter方法將傳入參數先保留,再賦值,傳入參數的retaincount 會 +1;對象


                 (2)   copy :表示拷貝特性,setter方法將傳入對象複製一份,須要徹底一份新的變量;內存地址改變;繼承


                 (3)   assign:賦值特性,不涉及引用計數,弱引用,setter方法將傳入參數賦值給實例變量,僅設置變量時使用;內存

                 (4)   strong:強引用,arc中使用,與mrc中retain相似,使用以後,引用計數+1;實例變量對傳入的對象有全部權,即強引用。strong根retain的意思相同併產生相同的代碼,語意上更能體現對象的關係;


                 (5)   weak:弱引用,arc中使用,若是傳入的對象被釋放了,其指向nil,能夠有效的避免野指針,其引用計數爲1;


       備註: arc(自動引用計數) ,arc 是 ios5推出的新功能,經過arc,能夠自動的管理內存。在arc模式下,只要沒有強指針(強引用)指向對象,對象就會被釋放。在arc模式下,不容許使用retain,release,retaincount等方法。而且,若是使用dealloc方法,不容許調用 [ super   dealloc];

                      arc模式下的property變量修飾詞爲strong, weak, 至關於mac 模式下的 retain ,assign ; strong代替retain,缺省關鍵詞,表明強引用。weak代替assign,聲明瞭一個能夠自動設置nil的弱引用,可是比assign多一個功能,指針指向的地址被釋放以後,指針自己也會自動釋放!(簡單來講,就是對傳入的對象沒有全部權,當該對象的引用計數爲0時,即該對象被釋放後,用weak聲名的實例變量指向nil, 即實例變量的值爲 0);

相關文章
相關標籤/搜索