【发布时间】:2012-12-30 09:23:07
【问题描述】:
我正在使用 ARC。 ARC 会自动释放dealloc 中的所有属性吗?是否需要手动将所有公共属性和私有字段设置为nil?有什么好的模式可以遵循吗?
【问题讨论】:
标签: objective-c ios automatic-ref-counting
我正在使用 ARC。 ARC 会自动释放dealloc 中的所有属性吗?是否需要手动将所有公共属性和私有字段设置为nil?有什么好的模式可以遵循吗?
【问题讨论】:
标签: objective-c ios automatic-ref-counting
在 ARC 下,模式是……不要在 dealloc 中做任何事情,甚至不执行它。 ARC 会为您处理属性和实例变量。
唯一的例外是,如果您的对象已注册通知,则 dealloc 是取消注册通知的好地方。
【讨论】:
someObject.delegate = nil;
好问题。使用ARC 时,编译器将为您实现dealloc 方法,并将隐式处理实例变量和属性的释放。
如果您的班级除了释放内存之外还需要做任何事情(例如,取消注册通知,如提到的 jrturton),您可能仍需要自定义 -dealloc。
您可以在 Apple 官方notes 中很好地了解过渡到 ARC 时需要考虑的事项。
【讨论】: