每一個OC對象都有本身的引用計數器,是一個整數,表示「對象被引用的次數」,即有多少人正在使用這個OC對象spa
每一個OC對象內部專門有4個字節的存儲空間來存儲引用計數器指針
當使用alloc、new或者copy建立一個新對象時,新對象的引用計數器默認就是1對象
當一個對象的引用計數器值爲0時,對象佔用的內存就會被系統回收。換句話說,若是對象的計數器不爲0,那麼在整個程序運行過程,它佔用的內存就不可能被回收,除非整個程序已經退出內存
給對象發送一條retain消息,能夠使引用計數器值+1(retain方法返回對象自己)資源
能夠給對象發送retainCount消息得到當前的引用計數器值
引用
當一個對象的引用計數器值爲0時,那麼它將被銷燬,其佔用的內存被系統回收程序
當一個對象被銷燬時,系統會自動向對象發送一條dealloc消息方法
通常會重寫dealloc方法,在這裏釋放相關資源,dealloc就像對象的遺言copy
一旦重寫了dealloc方法,就必須調用[super dealloc],而且放在最後面調用(ARC重寫無需調用)co
一旦對象被回收了,它佔用的內存就再也不可用,堅持使用會致使程序崩潰(野指針錯誤)