0

如果在 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是否需要这些代码?

4

2 回答 2

2

这不受 ARC 的影响。您仍然必须将强大的 IBOutlets 设置为 nil。

不过,它受 iOS 6 的影响。但这目前处于保密协议之下。

于 2012-08-26T19:12:24.023 回答
0

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

据我了解,Apple 将代码放在那里是为了提醒您在这种情况下您的子视图已经消失

请注意,他们没有将该代码放入 中dealloc,因为(正如您正确假设的那样)ARC确实为您负责清理工作(因为这些通常是指针)

于 2012-08-26T19:17:42.893 回答