1.自動(dòng)引用計(jì)數(shù)
在NSObject類的alloc類方法上設(shè)置斷點(diǎn),追蹤程序的執(zhí)行。以下列出執(zhí)行所調(diào)用的方法和函數(shù)。
+alloc;
+allocWithZone;
class_createInstance;
calloc
各個(gè)方法都通過(guò)同一個(gè)調(diào)用_CFDoExternRefOperation函數(shù),調(diào)用了一系列名稱相似的函數(shù)。蘋果的實(shí)現(xiàn)大概就是采用離散列表(引用計(jì)數(shù)表)來(lái)管理引用計(jì)數(shù)

屏幕快照 2017-02-05 下午3.27.38.png
通過(guò)引用計(jì)數(shù)表管理引用計(jì)數(shù)的好處
1.對(duì)象用內(nèi)存塊的分配無(wú)需考慮內(nèi)存塊頭部
2.引用計(jì)數(shù)表各記錄存有內(nèi)存塊地址,可從各個(gè)記錄追溯到各對(duì)象的內(nèi)存塊,方便檢查內(nèi)存泄漏
2.autorelease
NSRunloop每次循環(huán)過(guò)程中NSAutoreleasePool對(duì)象被生成或廢棄
NSAutoreleasePool *pool = [ [NSAutoreleasePool alloc]init];
id obj = [ [NSObject alloc] init];
[obj autorelease];
[pool drain]
autorelease 實(shí)例方法的本質(zhì)就是調(diào)用NSAutoreleasePool對(duì)象的addObject類方法
[NSAutoreleasePool showPools];
會(huì)將現(xiàn)在的NSAutoreleasePool的狀況輸出到控制臺(tái)