在mrc時代,我們需要在 dealloc中做很多,比如釋放物件,等等;
如今我們已經進入arc時代,對於普通物件的釋放,系統已經幫我們做好了;
那是否可以高枕無憂了呢?在arc下我們應該做什麼?
觀點:arc下,系統可以幫我們釋放該物件,及其包含的物件;
但是卻無法釋放不屬於該物件的一些東西,如:
1.通知的觀察者,或kvo的觀察者
由於通知中心是系統的乙個單例,你在註冊通知的觀察者時,實際上是在通知中心註冊的,
這時,即使arc下系統幫我們釋放了物件,但是在通知中心的觀察還是沒有移除,那麼當有
該通知時,依然會嘗試呼叫該物件的接受通知的方法,這可能會導致一些問題.
這一點有點像,你晚上六點下班了...但是卻沒有刷卡...,
2.物件強委託/引用的解除(例如xmppmannerger的delegatequeue)
對於其他的物件來把你當做委託 delegate時,並且是 強引用時,即時你自身被釋放,但是引用你的物件依然還在,
這時需要在引用你的物件移除該delegate
3.做一些其他的登出之類的操作(關閉程式執行期間沒有關閉的資源)
乙個物件,如乙個viewcontroller在銷毀之前有可能需要和server打交道;
這時我們也可以在dealloc中寫
關於dealloc的底層實現,可以參照objc執行時**
示例,arc下我們應該做的:
[html]view plain
copy
- (void)dealloc
arc下我們沒必要做的
[html]view plain
copy
- (void)dealloc
[html]view plain
copy
總結: dealloc在arc下的作用就是釋放 系統無法釋放的該物件占用的資源,或者其他物件對該物件的引用.
原文出自:
iOS應用開發 ARC
arc是什麼 arc是ios 5推出的新功能,全稱叫 arc automatic reference counting 簡單地說,就是 中自動加入了retain release,原先需要手動新增的用來處理記憶體管理的引用計數的 可以自動地由編譯器完成了。該機能在 ios 5 mac os x 10....
iOS 開發,混合使用 ARC 和非ARC
前提知識 arc automatic reference counting,自動引用計數 在開發 ios 3 以及之前的版本的專案時我們要自己負責使用引用計數來管理記憶體,比如要手動 retain release autorelease 等,而在其後的版本可以使用 arc,讓系統自己管理記憶體。問題...
iOS開發系列 ARC淺解
一 什麼是 arc 所謂arc就是automatic reference counting 即自動引用計數。arc是自ios5引入的。arc機制的引入是為了簡化開發過程的記憶體管理的。相對於之前的mrc manual reference counting arc機制顯得更加自動化。在使用arc開發過...