對象一出生引用計數(shù)器就為1
一個對象引用計數(shù)器為0時才會被釋放
給一個對象發(fā)送一條retain 計數(shù)器+1
發(fā)送一個release給對象,計算器-1
dealloc方法
一般會重寫dealloc方法,在這列是方法相關(guān)資源,dealloc就
//問題1:什么是引用計數(shù)器?
答:
對象被指針指向或被使用的次數(shù)
每個OC對象都有自己的引用計數(shù)器,它是一個整數(shù),表示有多少人正在用這個對象
//問題2:引用計數(shù)器的作用?
答:
計算對象被使用次數(shù)
當使用alloc、new或者copy創(chuàng)建一個對象時,對象的引用計數(shù)器默認就是1
當對象的引用計數(shù)器為0時,對象占用的內(nèi)存就會被系統(tǒng)回收
如果對象的計數(shù)器不為0,那么在整個程序運行過程,它占用的內(nèi)存就不可能被回收(除非整個程序已經(jīng)退出 )
//問題3:怎么操作引用計數(shù)器?
答:
給對象發(fā)送一條retain消息,可以使引用計數(shù)器值+1(retain方法返回對象本身
給對象發(fā)送一條release消息, 可以使引用計數(shù)器值-1
給對象發(fā)送retainCount消息, 可以獲得當前的引用計數(shù)器值
需要注意的是: release并不代表銷毀\回收對象, 僅僅是計數(shù)器-1
alloc new copy retain 會增加對象的引用計數(shù)器一次
release能減少對象的引用計數(shù)器一次
//問題4:dealloc 方法的作用?
當對象的引用計數(shù)器為0時,對象就會被釋放,在對象被釋放前就會調(diào)用這這個方法
對象即將被銷毀時系統(tǒng)會自動給對象發(fā)送一條dealloc消息
(因此, 從dealloc方法有沒有被調(diào)用,就可以判斷出對象是否被銷毀)