gpt4 book ai didi

ios - 在 loadView 中初始化哪些数据比在 init 中更好

转载 作者:行者123 更新时间:2023-12-01 16:59:09 24 4
gpt4 key购买 nike

当内存不足并且 View 被操作系统清理时,我的理解是 viewDidUnload 是清理 UIViewController 使用的对象和内存的合适位置(否则不会因为处于 View 层次结构中而被清理) )。当再次调用 loadView 来创建 View 时,这些数据会被重新初始化。有人可以举例说明可以清理哪些东西(同样在 loadView 中初始化)?

我目前在 loadView 中初始化了一些数据,这些数据为我的 View Controller 设置了运行涉及字幕、图像等的复杂动画脚本的阶段。我认为如果要删除我的 View ,释放和清理这些数据是有意义的操作系统(和 viewDidUnload 被调用),但后来我想,为什么我不只是在 init 中初始化该数据并在 dealloc 中清理它,而不是重复初始化和清理相同的数据(它不会改变为 View 何时加载或显示的函数)。这会是一个更好的地方吗?

基本上,我的想法是:

  • 是的,我应该在 init 中初始化它并在 dealloc 中释放,因为它永远不会改变
  • 在 loadView 中初始化事物(然后在 viewDidUnload 中进行清理)是一种合适的做法,当数据将根据加载 View 的时间进行不同的初始化(或者更合适的是当 View 出现在 viewWillAppear/viewWillDisappear 中时)或者它是一个很好的候选者释放内存,因为它占用了大量内存,如果 View 不活动,您希望看到这些内存被释放。

  • 谁能给我一些关于我的问题和/或我的思路的澄清?

    最佳答案

    如果您要在该 View 和另一个 View 之间来回切换并且 View Controller 将被保留,您确实可以将初始化移动到 init , 并在 dealloc 中清理它.但你想做的也是在 - (void)didReceiveMemoryWarning 中清理它(注意不要在 self.view 中使用 didReceiveMemoryWarning,否则会重新加载 View :))。那么你可以使用延迟加载在 viewDidLoad 中重新加载它(即,如果它不存在,则初始化数据,否则不要)。

    当然,您不能在 init 中进行任何初始化这取决于当前的 View .. viewDidLoad是那个地方。

    关于ios - 在 loadView 中初始化哪些数据比在 init 中更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8773553/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com