有必要在ARC发布子视图吗?

时间:2012-08-26 19:05:41

标签: objective-c xcode automatic-ref-counting

如果在XCode中创建一个使用ARC的UIViewController,则viewDidUnload:方法定义如下:

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

如果在XIB中创建了一个按钮,则该代码会自动插入到方法的顶部:

[self setSomeButton:nil];

这些代码是否与ARC完全相同?

2 个答案:

答案 0 :(得分:2)

这不受ARC的影响。你仍然需要将强大的IBOutlets设置为零。

它受iOS 6的影响。但是现在这已经在NDA之下了。

答案 1 :(得分:0)

重要的是要记住,在大多数情况下,永远不会调用viewDidUnload。根据我的经验,只有当你的VC“高于”导航堆栈中的当前VC并且屏幕外并且存在低内存情况时才会调用它。

据我所知,Apple将那些代码放在那里提醒你的子视图已经消失了

请注意,他们不会将该代码放在dealloc中,因为(正如您所假设的那样)ARC 会为您进行清理(因为这些通常是弱< / em>指针)