iOS之MRC和ARC

1.棧放局部變量(代碼結束就釋放,系統自動回收)堆放對象(動態分配)
2.每一個對象裏分配4個字節的存儲空間放 引用計數器 當引用計數器值爲0時對象佔用的內存自動被回收自動回收,引用計數器的初始值是1.
3.retain 引用計數器+1   release引用計數器-1
4.能夠給對象發送(調用)retainCount來接收當前的引用計數器的值
5.重寫dealloc(對象遺言)來判斷是否回收對象內存,都要調用
[super dealloc](寫在方法最後)
6.使用alloc new copy retain計數器爲1.只要出現了上面3個,就必需要出現release或者autorelease;
7.retain返回的是調用它的自己,release沒有返回值
8.野指針:指向殭屍對象(不可用內存)的指針。防止野指針例如:p=nil;
9.EXC-BAD-ACCESS訪問已經被釋放的內存(野指針錯誤)。殭屍對象後再用retain是不行的。(人死不能復生)
10.殭屍對象:所佔有內存已經被回收的對象。
11.property的retain參數只適用於OC對象類型:release舊值,retain新值。
12.property中的多線程nonatomic性能高,atomic性能低,通常用nonatomic
13.property中參數的setter:決定了set方法的名稱,必定要加冒號。getter決定了get方法的名稱
14.當一個方法的返回值是bool時用is開頭(規範)
15.在實際開發中不能打開實時對象檢測;
16.在OC中用nil調用方法不會出現異常;
17.內存泄漏就是不被使用的對象一直在內存中沒有被銷燬
18.若是一個程序中出現互引用問題,那麼一端對象的@property參數用assign
19.在互引用問題中開發中引用一個類的規範
1> 在.h文件中用@class來聲明類
2> 在.m文件中用#import來包含類的全部東西
20.在dealloc方法中的[super dealloc]要寫在最後面;
21.無論對象是在@autoreleasepool大括號以內仍是以外,只要在大括號裏面調用對象的autoreleasepool就有做用
22.只有在自動釋放池的做用域中調用對象的autoreleasepool方法才能正常的使用
23.在ARC機制中不能再去調用release,retain和[super dealloc];
24.只要沒有強指針指向的對象,ARC中當即被自動回收,默認狀況全部指針都是強指針;
25.__weak中是兩個弱指針
相關文章
相關標籤/搜索