dealloc 中的每一行都會有一個錯誤。 我們不再被允許調用 [release] 了, 也不允許調用 [super dealloc]。 因為我們在 dealloc 不再做任何操作了, 所以我們可以直接把這個方法刪除掉。
唯一一個留着 dealloc 方法的原因就是, 你需要釋放一些不在 ARC 控制下的資源。 例如 Core Foundation 對象中調用 CFRelease(), 對那些通過 malloc() 分配的內存調用 free(), 注銷通知,停止 Tiner, 等等。
如果你是一個對象的代理的話,有時必須顯式的斷開和它的連接,但通常這都是自動的。 大部分情況下,代理都是弱引用(避免循環引用), 當一個即將被釋放的對象是其他對象的代理的話, 當這個對象被銷毀時,代理指針將會被自動設置為 nil。 弱指針在這之后會被自動清楚。
另外, 在你的 dealloc 方法中, 你仍然可以使用實例變量, 因為他們在這時候還沒被釋放掉。 在 dealloc 返回之前,都不會被釋放。