用 ARC 销毁对象的正确方法是什么?
我想UIViewController
在运行时的特定时间销毁一些 s 以及一个持有 AUGraph 的对象。
目前,当我的父 viewcontroller 创建 viewcontroller 对象并将其视图分配给它view
时,这些对象显然与父对象保持联系。我想在不需要时销毁这些子视图控制器。
用 ARC 销毁对象的正确方法是什么?
我想UIViewController
在运行时的特定时间销毁一些 s 以及一个持有 AUGraph 的对象。
目前,当我的父 viewcontroller 创建 viewcontroller 对象并将其视图分配给它view
时,这些对象显然与父对象保持联系。我想在不需要时销毁这些子视图控制器。
只需将引用这些对象的变量设置为nil
. 然后编译器将在那个时刻释放对象,如果不存在对它们的其他强引用,它们将被销毁。
[release]
当您将__strong
引用对象的变量设置为 时,ARC 将插入调用nil
。
@interface MyViewController : UIViewController {
UIViewController *childViewController;
}
...
@end
-(void)destroyChild {
childViewController = nil;
}
当你有一个 C 风格的对象数组时,也会做同样的事情:设置数组的一个元素来nil
释放那里的项目,除非它是__weak
/ __unsafe_unretained
。如果将子视图控制器保留在 中NSMutableArray
,则从数组中删除对象会减少其引用计数。
通常,您可以通过将对象设置为 nil 来实现此目的。幕后发生的事情是对象被 ARC 释放,然后设置为 nil。这应该完成你想要的。