gpt4 book ai didi

objective-c - 在 UIViewController 中加载和卸载数据

转载 作者:行者123 更新时间:2023-11-29 13:40:07 24 4
gpt4 key购买 nike

我需要在我的 UIViewController 中加载一些数据以在 iPhone 模态视图中显示 UIPickerView 小部件。

我做了一些研究,发现了这个 answer所以。我继续在 initWithNibName:bundle: 中实现我的数据读取代码,并在 dealloc 中实现数据卸载。然而,Instruments 一直告诉我在重复显示模态视图时存在内存泄漏,并且在调试过程中我注意到每次显示 View 时都会调用 initWithNibName:bundle: ,但在正常情况下从未调用过 dealloc执行(尽管根据 Apple 的 UIViewController Class Reference 文档,它是由低内存条件触发的,这同样适用于 viewDidUnload)。

我最终在 viewDidLoad: 方法中加载数据,并在 viewDidDisappear: 中释放它,小部件显示数据并且没有泄漏。但是,我想知道这方面是否有任何好的做法,因为 Apple 文档中的一条评论提到了这一点:

You should not use this method (i.e. viewDidUnload) to release user data or any other information that cannot be easily recreated.

我认为正确的方法是在 viewDidLoad 中加载数据并在 viewDidUnload 中释放对它的所有引用,但实际上除非出现低内存情况,否则不会调用后一种方法,因此每次显示 View 时,数据再次加载,对旧数据的引用丢失,导致内存泄漏。

感谢您的评论。

最佳答案

如果每次显示您的 View 时都调用 viewDidLoad,就会发生不好的事情。 viewDidAppear 应该被调用,但是 viewDidLoad 应该只在第一次需要 View 时调用,如果需要 View 并且 viewDidUnload 被调用。

关于objective-c - 在 UIViewController 中加载和卸载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9421780/

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