Objective - C dealloc方法注意事项

当对象引用降为0(此时retainCount不一定为零,由于优化retainCount没有执行-1,对象直接释放)的时候,对象会被释放。但是具体何时释放,无法保证

dealloc 应该执行那些操作

1.清理观测行为(移除通知,键值观测)

2.释放对象拥有的引用,比如释放一些非Objective-C对象

dealloc 不应该执行那些操作

1.开销过大或系统稀缺的资源,例如文件描述符、套接字、大块内存等。这些资源不应该保留过长时间。不过可以利用dealloc方法防止忘记清理这些资源

2.不要在dealloc里谁便调用其他方法。如果调用的方法执行某些异步任务,那么等到任务结束时,系统已经销毁了这个对象。这很容易引起应用崩溃(因为已经无法回调到此对象);调用自己的方法自己的方法,因为对象处于正在回收状态

了解更多请参考:Effective Objective-C 2.0 第31条

你可能感兴趣的:(Objective - C dealloc方法注意事项)