为什么Apple使用assign而不是weak来存储委托?

时间:2013-12-06 08:28:26

标签: cocoa-touch cocoa delegates automatic-ref-counting declared-property

某些Cocoa和Cocoa Touch类将其委托属性声明为assign而不是weak,这会强制该类的用户nil dealloc中的属性

-(void)dealloc
{
    self.imageScrollView.delegate = nil;
    self.tableView.delegate = nil;
    self.tableView.dataSource = nil;
}

这非常麻烦。

为什么Apple会这样做?

1 个答案:

答案 0 :(得分:5)

原因是并非所有系统类都使用ARC编译。

  

如果需要管理资源,可以实现dealloc方法   除了释放实例变量。你不必(确实如此)   你不能发布实例变量,但你可能需要调用   关于系统类和其他代码的[systemClassInstance setDelegate:nil]   这不是使用ARC编译的。

请参阅developer.apple.com上的此页:Transitioning to ARC Release Notes