1.自動引用計數
在NSObject類的alloc類方法上設置斷點,追蹤程序的執行。以下列出執行所調用的方法和函數。
+alloc;
+allocWithZone;
class_createInstance;
calloc
各個方法都通過同一個調用_CFDoExternRefOperation函數,調用了一系列名稱相似的函數。蘋果的實現大概就是采用離散列表(引用計數表)來管理引用計數
屏幕快照 2017-02-05 下午3.27.38.png
通過引用計數表管理引用計數的好處
1.對象用內存塊的分配無需考慮內存塊頭部
2.引用計數表各記錄存有內存塊地址,可從各個記錄追溯到各對象的內存塊,方便檢查內存泄漏
2.autorelease
NSRunloop每次循環過程中NSAutoreleasePool對象被生成或廢棄
NSAutoreleasePool *pool = [ [NSAutoreleasePool alloc]init];
id obj = [ [NSObject alloc] init];
[obj autorelease];
[pool drain]
autorelease 實例方法的本質就是調用NSAutoreleasePool對象的addObject類方法
[NSAutoreleasePool showPools];
會將現在的NSAutoreleasePool的狀況輸出到控制臺