gpt4 book ai didi

ios - UIViewController 阻止 View 卸载

转载 作者:IT王子 更新时间:2023-10-29 08:18:28 26 4
gpt4 key购买 nike

当我的 iPhone 应用程序收到内存警告时,当前不可见的 UIViewController View 将被卸载。在一个特定的 Controller 中,卸载 View 和 socket 是相当致命的。

我正在寻找一种方法来防止此 View 被卸载。我发现这种行为相当愚蠢 - 我有一个缓存机制,所以当出现内存警告时 - 我卸载了大量数据并释放了足够的内存,但我绝对需要这个 View 保持不变。

我看到 UIViewController 有一个方法 unloadViewIfReloadable,它在内存警告出现时被调用。有人知道如何告诉 Cocoa Touch 我的 View 不可重新加载吗?

关于如何防止我的 View 因内存警告而被卸载还有其他建议吗?

提前致谢


有关 View Controller 的 View 生命周期的 Apple 文档说:

didReceiveMemoryWarning - The default implementation releases the view only if it determines that it is safe to do so

现在 ... 我用一个空函数覆盖了 didReceiveMemoryWarning,它只调用 NSLog 让我知道收到了警告。但是 - View 无论如何都会被卸载。另外,究竟是根据什么标准决定 View 是否可以安全卸载……哦!这么多问题!

最佳答案

根据文档,didReceiveMemoryWarning: 的默认实现在安全的情况下释放 View (即:superview==nil)。

要防止 View 被释放,您可以覆盖 didReceiveMemoryWarning: 但在您的实现中不要调用 [super didReceiveMemoryWarning]。这是默认释放 View 的地方(如果不可见)。

默认的 didReceiveMemoryWarning 通过调用 [viewcontroller setView:nil] 释放 View ,因此您可以改写它。

关于ios - UIViewController 阻止 View 卸载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2965541/

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