Cocoa采用了一種稱為引用計數(shù)的技術,有時也叫做保留計數(shù)。每個對象有一個與之相關聯(lián)的整數(shù),稱作它的引用計數(shù)器或保留計數(shù)器。當某段代碼需要訪問一個對象時,該代碼將該對象的保留計數(shù)器值加1,表示“我要訪問該對象”。當這段代碼結(jié)束對象訪問時,將對象的保留計數(shù)器值減1,表示它不再訪問該對象。當保留計數(shù)器值為0時,表示不再有代碼訪問該對象了,因此對象將被銷毀,其占用的內(nèi)存被系統(tǒng)回收以便重用。
當使用alloc,new方法或者通過copy消息(生成接收對象的一個副本)創(chuàng)建一個對象時,對象的保留計數(shù)器值被設置為1.要增加對象的保留計數(shù)器值,可以給對象發(fā)送一條retain消息。要減少對象的保留計數(shù)器值,可以給對象發(fā)送一條release消息。
當一個對象因其保留計數(shù)器歸0而即將被銷毀時,Objective-C自動向?qū)ο蟀l(fā)送一條dealloc消息。你可以在自己的對象中重寫dealloc方法。可以通過這種方法釋放已經(jīng)分配的全部相關資源。一定不要直接調(diào)用dealloc方法。可以利用Objective-C在需要銷毀對象時調(diào)用dealloc方法。要獲得保留計數(shù)器的當前值,可以發(fā)送retainCount消息。
參考資料:《Objective-C基礎教程》
新聞熱點
疑難解答