我正在尝试通过覆盖 dealloc 在我的 Objective-C 类中创建一些清理代码:
-(void)dealloc {
//cleanup code
[super dealloc];
}
虽然我不能这样做,因为[super dealloc]
在启用 ARC 时编译器不允许这样做。有没有我可以使用的替代方案?
我正在尝试通过覆盖 dealloc 在我的 Objective-C 类中创建一些清理代码:
-(void)dealloc {
//cleanup code
[super dealloc];
}
虽然我不能这样做,因为[super dealloc]
在启用 ARC 时编译器不允许这样做。有没有我可以使用的替代方案?
从过渡到 ARC 发行说明(重点是我的):
如果您需要管理资源而不是释放实例变量,您可以实现一个 dealloc 方法。您不必(实际上您不能)释放实例变量,但您可能需要在系统类和其他未使用 ARC 编译的代码上调用 [systemClassInstance setDelegate:nil]。
ARC 中的自定义 dealloc 方法不需要调用 [super dealloc](它实际上会导致编译器错误)。到 super 的链接是由编译器自动执行的。
因此,您可以在使用 ARC 时进行相同类型的清理dealloc
,只是不要调用super
.
当 ARC 处于活动状态时,您根本不调用[super dealloc]
. ARC 会为您做到这一点。或者,您可以有一个prepareForDealloc
允许您调用的方法,该方法super
是从dealloc
您的基类内部调用的。