2

一些 Cocoa 和 Cocoa Touch 类将它们的委托属性声明为assign而不是weak,这会强制类的用户nildealloc

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

这很麻烦。

苹果为什么要这样做?

4

1 回答 1

5

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

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

请参阅 developer.apple.com 上的此页面:过渡到 ARC 发行说明

于 2013-12-06T08:46:25.177 回答