【问题标题】:viewDidUnload no longer called in ios6ios6 中不再调用 viewDidUnload
【发布时间】:2012-09-12 14:40:28
【问题描述】:

我刚刚安装了新版本的 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 方法中?

【问题讨论】:

    标签: deprecated ios6 viewdidunload


    【解决方案1】:

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

    什么是“旧”推荐方式?您必须始终释放dealloc 中保留的实例变量;一直都是这样,而且一直都是这样。

    只是在viewDidUnload(仅针对低内存调用)您可以将您的属性设置为nil

    【讨论】:

      【解决方案2】:

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

      @property (weak) IBOutlet UILabel * labelText;
      

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

      【讨论】:

        【解决方案3】:

        对于第一个问题:

        您的 ViewController 将收到 didReceiveMemoryWarning 方法回调,您可以在此方法中取消视图和其他组件

        如果您还没有,请查看 WWDC 2012 上关于视图控制器进化的视频会议(我相信它们仅适用于注册开发者,但不确定)。

        回答你的第二个问题。

        [对象释放];在交易中。释放前无需将 nil 分配给对象。

        【讨论】:

        • 感谢您的回答。事实上,我对第一个问题更感兴趣。但正如stackoverflow.com/a/9281416/127493 所说(例如,还有许多其他主题),IBOutlet 属性应该在以前的最佳实践中在 viewDidUnload 中发布。
        • 当然,dealloc 中的[object release]; 只有在您运行 ARC 时才有可能。
        • WWDC 2012 视频中关于 View Controllers 的逐字逐句:“viewWillUnload 和 viewDidUnload。我们不会再调用它们了。我的意思是,我们经历了一种成本效益方程和分析. 在早期,我们确实需要确保在内存警告时卸载视图。有各种图形和后备存储等也会被卸载。现在我们独立于视图卸载那些, 所以卸载那些对我们来说没什么大不了的,而且有很多错误可以指向
        • 未清除的已卸载视图,最终我们认为不值得自动调用这些视图。所以我们要弃用这些方法。您仍然可以获得相同的行为。您的视图控制器仍将收到“didReceiveMemoryWarning”,如果他们愿意,他们可以取消该视图。它将按预期工作。您可能需要先检查您的视图是否不在窗口中,然后再将其设为 nil。我之所以这么说,是因为有些应用程序实际上使用 viewWillUnload、viewDidUnload 作为摆脱其他资源的一种手段,这些资源也不一定与
        • 视图本身,所以现在代码可能不得不转移到 didReceiveMemoryWarning。"
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-07
        • 2010-11-20
        • 1970-01-01
        • 2011-01-22
        • 2011-04-10
        • 1970-01-01
        相关资源
        最近更新 更多