viewDidUnload不再叫在iOS6的(viewDidUnload no longer cal

2019-07-31 17:55发布

我刚安装的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方法?

Answer 1:

对于第一个问题:

您的视图控制器将获得didReceiveMemoryWarning方法回调,您可以零出此方法中的观点与其他组件

做参考检查EVOLUTION视图控制器WWDC 2012视频会话,如果你有没有(我相信他们是仅适用于注册开发者,但不知道)。

回答你的第二个。

[对象释放]; 在dealloc中。 无需分配零释放之前反对。



Answer 2:

我建议你使用弱属性,如IBOutlets

@property (weak) IBOutlet UILabel * labelText;

这样,你就不需要在dealloc中做任何事情。 在iOS 6中,根本ViewDidUnload不会叫,iOS5的或更早时内存不足的警告已经出现,那就只需要调用。



Answer 3:

与第二一:什么是释放一个IBOutlet属性的新推荐的方式? 在dealloc方法?

什么是“老字号”推荐的方法? 你必须始终释放保留的实例变量dealloc ; 它一直是这样的,仍然是这样。

这只是在viewDidUnload (其中只要求低内存),你可以设置你的属性nil



文章来源: viewDidUnload no longer called in ios6