我正在尝试学习iOS 5中的自动引用计数。现在,此问题的第一部分应该很简单:
它是正确的,我根本不使用ARC时需要写在我的dealloc明确释放属性声明?换句话说,这是真的,以下就不是需要一个明确的dealloc的?
@interface MyClass : NSObject @property (strong, nonatomic) NSObject* myProperty; @end @implementation MyClass @synthesize myProperty; @end
我的下一个更重要的问题来自“ 过渡到ARC发行说明”文档中的一行:
您不必(实际上不能)释放实例变量,但是您可能需要在系统类和未使用ARC编译的其他代码上调用[self setDelegate:nil]。
这就引出了一个问题:我怎么知道哪些系统类没有用ARC编译?什么时候应该创建自己的dealloc并将显着保留的属性显式设置为nil?我是否应该假设属性中使用的所有NS和UI框架类都需要显式的dealloc?
关于SO和其他方面的大量信息,涉及使用手动引用跟踪时释放属性支持ivar的做法,但是使用ARC时,有关此信息的信息很少。
MyController : UIViewController
创建并拥有UIView 的类,并且还将视图的委托设置为其自身。它是该视图的唯一保留所有者。当控制器被取消分配时,视图也应被取消分配。那么委托指针是否悬空有关系吗?