某些Cocoa和Cocoa Touch类将其委托属性声明为assign
而不是weak
,这会强制该类的用户nil
dealloc
中的属性
-(void)dealloc
{
self.imageScrollView.delegate = nil;
self.tableView.delegate = nil;
self.tableView.dataSource = nil;
}
这非常麻烦。
为什么Apple会这样做?
答案 0 :(得分:5)
原因是并非所有系统类都使用ARC编译。
如果需要管理资源,可以实现dealloc方法 除了释放实例变量。你不必(确实如此) 你不能发布实例变量,但你可能需要调用 关于系统类和其他代码的[systemClassInstance setDelegate:nil] 这不是使用ARC编译的。
请参阅developer.apple.com上的此页:Transitioning to ARC Release Notes