Dealloc
让我们看看这些错误,然后一个一个的修复他们。 我们从 dealloc 开始:
dealloc 中的每一行都会有一个错误。 我们不再被允许调用 [release] 了, 也不允许调用 [superdealloc]。 因为我们在 dealloc 不再做任何操作了, 所以我们可以直接把这个方法删除掉。
唯一一个留着 dealloc 方法的原因就是, 你需要释放一些不在 ARC 控制下的资源。 例如 Core Foundation对象中调用 CFRelease(), 对那些通过 malloc() 分配的内存调用 free(), 注销通知,停止 Tiner,等等。
如果你是一个对象的代理的话,有时必须显式的断开和它的连接,但通常这都是自动的。 大部分情况下,代理都是弱引用(我们马上会介绍到),当一个即将被释放的对象是其他对象的代理的话, 当这个对象被销毁时,代理指针将会被自动设置为 nil。弱指针在这之后会被自动清楚。
另外, 在你的 dealloc 方法中, 你仍然可以使用实例变量, 因为他们在这时候还没被释放掉。 在 dealloc返回之前,都不会被释放。