iPhone ARC发行说明 - 系统类代理上的dealloc?

时间:2011-10-28 20:34:48

标签: iphone automatic-ref-counting

我理解ARC发行说明,但我一直在想这究竟是什么意思以及系统类是什么:

如果需要管理除释放实例变量之外的资源,则可以实现dealloc方法。您不必(实际上您不能)释放实例变量,但您可能需要在系统类和其他未使用ARC编译的代码上调用[systemClassInstance setDelegate:nil]

根据ARC

强制执行的新规则,这就在ARC Release Notes

这里所谓的系统类是什么?。

1 个答案:

答案 0 :(得分:4)

我认为这意味着任何以'NS'或'UI'开头的课程。 Apple没有从头开始重建所有框架以使用ARC。相反,如果您遵守规则,您的新ARC代码应该很乐意与现有框架互操作。

特别是,系统类(例如UIApplication)的委托属性仍然声明为(nonatomic, assign)而不是(nonatomic, weak)。这意味着当释放委托时,这些属性不会自动归零。事实上,assign是ARC下unsafe_unretained的同义词。因此,建议在dealloc方法中手动nil委托属性。这样,系统类在消失之后就不会尝试访问它的委托。