一些Cocoa和Cocoa Touch类声明它们的委托属性assign
而不是weak
,它强制类的用户nil
输出属性dealloc
-(void)dealloc { self.imageScrollView.delegate = nil; self.tableView.delegate = nil; self.tableView.dataSource = nil; }
这非常麻烦.
为什么苹果会这样做?
原因是并非所有系统类都使用ARC编译.
如果需要管理除释放实例变量之外的资源,则可以实现dealloc方法.您不必(实际上您不能)释放实例变量,但您可能需要在系统类和未使用ARC编译的其他代码上调用[systemClassInstance setDelegate:nil].
请参阅developer.apple.com上的此页面:转换为ARC发行说明