gpt4 book ai didi

ios - 在 UINavigationController 上推送多个 View Controller 时出现内存问题

转载 作者:可可西里 更新时间:2023-11-01 06:23:39 26 4
gpt4 key购买 nike

我正在为 iPad 制作一本交互式书籍,并使用 UINavigationController 实现页面与下一页之间的导航。当用户翻页时,下一页将被推到导航堆栈的顶部。

我现在进入应用程序的第 15 页,当我尝试从第 14 页转到第 15 页时,应用程序崩溃了。控制台中没有错误消息,设备的崩溃日志中也没有任何错误消息。

Storyboard中的每个 View Controller 场景都有 UIImageViews 显示 5MB 到 20MB 之间的图像。 View Controller 的 viewDidLoad 方法只被调用一次。所有应用程序 Assets 的总大小低于 200B。我正在使用 ARC。

我已经使用 Instruments 的内存监视器运行了该应用程序。应用程序的Real Memory 消耗在每翻新一页时增加约80MB,当达到800MB 时崩溃(设备为iPad 3)。

  • 为什么这么大的内存消耗?是不是Storyboard场景中的UIImageView缓存了图片?

  • 当您使用UINavigationController 和 ARC?

我尝试在 View Controller 的 viewDidDisappear: 方法中将所有 View Controller 的 subview 设置为 nil,但内存消耗保持不变。

最佳答案

当您使用 UINavigationController 时,您推送的每个 ViewController 都会永远保留在内存中(好吧,直到您的应用程序退出),除非您的用户按下该特定 ViewController 上的后退按钮。它保留了一堆 ViewController - 可见的位于顶部。

所以简单的答案是不要为此使用 UINavigationController。我建议构建您自己的 ViewController,它“知道”下一页和上一页,并在需要时手动加载和删除它们。通过这种方式,您可以确保内存中一次只有一页(过渡期间除外 - 也许您可以将此动画用于过渡 http://cocoacontrols.com/platforms/ios/controls/xbpagecurl)。

关于ios - 在 UINavigationController 上推送多个 View Controller 时出现内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11196871/

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