gpt4 book ai didi

iOS - 内存警告卸载 View Controller 并使应用程序无响应

转载 作者:行者123 更新时间:2023-11-28 22:05:37 25 4
gpt4 key购买 nike

正文:我在我的应用程序中收到内存警告,之后 UI 停止响应。而且,在 XCode 日志中,我确实看到 ViewController being Unloaded 消息。恐怕是因为我没有正确处理 View 之间的转换,这导致了这个内存问题。

我拥有的 ViewControllers(VC) 的简要说明以及我如何执行转换:
我有 1 个 main/home VC,这是我应用程序主要工作流程的开始。从所有其他 VC 那里,我有返回 Home VC 的链接。因此,我没有使用从所有 VC 到第一个 VC 的 Segues,而是使用以下方式:


UIStoryboard* sb = [UIStoryboard storyboardWithName:@"Main_iPad" bundle:nil];
HomeViewController *homeViewController = [sb instantiateViewControllerWithIdentifier:@"HomeView"];
[self presentViewController:homeViewController animated:YES completion:nil];

目的只是为了避免连接到主视图的所有 View 出现太多 Segue。

我觉得这种转换方式会导致内存问题。同一 View 被多次添加到堆栈并导致问题。我不是 iOS 专家,所以任何帮助/建议都会对我有很大帮助。

最佳答案

看起来就像您每次打算转换回 HomeView 时都在创建一个全新的 ViewController 的方式。这是一个非常糟糕的主意,因为每次进行转换时,您都会在堆栈上放置一个新的 View Controller ,而不是使用原始的 ViewController(您应该这样做)。

因此,当您不断进行转换时,您正在分配新内存,这最终会导致内存警告,然后导致堆栈溢出,从而使您的应用程序崩溃。

HomeViewController 应该使用此方法 presentViewController:animated:completion: 和 dismissViewControllerAnimated:completion: 或类似的东西来呈现其他 View Controller ,以便在您不想使用 segues 时执行转换。

请阅读此苹果文档: https://developer.apple.com/library/ios/featuredarticles/viewcontrollerpgforiphoneos/ModalViewControllers/ModalViewControllers.html

关于iOS - 内存警告卸载 View Controller 并使应用程序无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24101188/

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