我刚刚安装了新版本的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方法?
答案 0 :(得分:9)
我建议您使用IBOutlets的弱属性,如
@property (weak) IBOutlet UILabel * labelText;
这样你就不需要在dealloc中做任何事了。在iOS 6中,只是ViewDidUnload不会调用,iOS5或更早版本只是在发生内存警告时调用。
答案 1 :(得分:1)
和第二个:发布IBOutlet的新推荐方法是什么? 财产?在dealloc方法?
什么是“旧的”推荐方式?您必须始终在dealloc
中释放保留的实例变量;它一直是这种方式,并继续这样。
只是在viewDidUnload
(仅限内存不足)中,您还将您的属性设置为nil
。