不再在ios6中调用viewDidUnload

时间:2012-09-20 08:47:25

标签: deprecated ios6 viewdidunload

我刚刚安装了新版本的Xcode / ios6。 viewDidUnload现已折旧。

在苹果文档中,

  

viewDidUnload [...]在iOS 6.0中已弃用。在低内存条件下不再清除视图,因此永远不会调用此方法。

但是大量的应用程序正在使用此回调来发布其属性,例如:

- (void)viewDidUnload {
    [super viewDidUnload];

    self.recipientButton = nil;
    self.connectButton = nil;
    self.infoLabel = nil;
}

这是发布IBOutlets的最佳做法。

所以,第一个问题:
iOS 6中这些现有应用程序会发生什么?他们会泄漏吗?

和第二个:
发布IBOutlet属性的新推荐方法是什么?在dealloc方法?

2 个答案:

答案 0 :(得分:9)

我建议您使用IBOutlets的弱属性,如

@property (weak) IBOutlet UILabel * labelText;

这样你就不需要在dealloc中做任何事了。在iOS 6中,只是ViewDidUnload不会调用,iOS5或更早版本只是在发生内存警告时调用。

答案 1 :(得分:1)

  

和第二个:发布IBOutlet的新推荐方法是什么?   财产?在dealloc方法?

什么是“旧的”推荐方式?您必须始终在dealloc中释放保留的实例变量;它一直是这种方式,并继续这样。

只是在viewDidUnload(仅限内存不足)中,您将您的属性设置为nil