已经开启了ARC dealloc 还可以用?

我的工程已经开启ARC了,但是我看-(void)dealloc还是可以实现的,那这个方法还是会被调用吗?还是就是个摆设?
什么时候会调用它?ARC都开起来了,这个留着还有什么用

阅读 15.8k
3 个回答

官方文档说得很清楚http://developer.apple.com/library/ma...

You may implement a dealloc method if you need to manage resources other than releasing instance variables. You do not have to (indeed you cannot) release instance variables, but you may need to invoke [systemClassInstance setDelegate:nil] on system classes and other code that isn’t compiled using ARC.

用来在dealloc的时候手动解除delegate关系。

dealloc当然会被调用(通常是以被编译器自动插入代码的方式),也可以实现(尤其是如果有某些非Cocoa对象资源需要管理的时候)。

ARC_Illustration.jpg

参考 CLANG 相关文档

仍会在对象彻底释放前调用dealloc方法。

ARC与非ARC的区别:ARC中dealloc中不得显式调用[super dealloc]、不得显式[obj release]。

而无需声明(编译自动生成)dealloc是SDK4就有的特性,和ARC无关。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏