天天看點

iOS記憶體小知識

//ios沒有垃圾回收機制,oc有垃圾回收機制,mac有垃圾回收機制,mac在10.1版本後被啟用
//mrc(引用計數)手動配置設定并釋放
    
//alloc 配置設定空間
//retain 引入計數加1
//copy  複制(另開辟空間,和原來的一樣)
//release 釋放,引用計數減1
//autorelease 在未來某一時刻減1
//dealloc  清除 
 //記憶體中會出現的問題:記憶體溢出,野指針
       //gc:垃圾回收機制,可以自動判斷那些記憶體是不再使用的,由系統幫助我們回收
       //MRC:手動記憶體管理,也叫手動引用計數,由我們自己判斷那塊記憶體還在使用,同時判斷有多少人在使用.當引用計數為0的時候,記憶體釋放,同時指針置空,防止野指針
       //ARC:自動記憶體管理,也叫自動引用計數,當我們需要引用計數-1時,由編譯器幫我們添加release語句
       //OC提供了垃圾回收機制,但是ios并未采用
       //Mac OS 10.8之前使用垃圾回收機制,10.8之後棄用.
       
       
       
       //關于引用計數的一些方法
       //+alloc:開辟記憶體,設定引用計數為1.
       //-retain:使引用計數+1.
       //-copy:将記憶體或對象指派一份,并将複制的記憶體或對象引用計數置1.
       //-release:使引用計數-1.
       //-autorelease:使引用計數-1,隻不過是在出自動釋放池之後才執行-1操作
       //-dealloc:當引用計數為0時,由系統自動調用,釋放空間
       //自動釋放池有兩種形式:(優先使用第一種)
          //第一種:@autorelease{}
          //第二種:NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
               //[pool release];
       
      //當釋放已經為0時再釋放 會産生過度釋放      

繼續閱讀