我正在为 iPad 制作一本互动书,并且正在使用UINavigationController
实现页面与下一页之间的导航。当用户翻页时,下一页被推送到导航堆栈的顶部。
我现在已经进入应用程序的 15 页,当我尝试从第 14 页转到第 15 页时,应用程序崩溃了。控制台中没有错误消息,设备的崩溃日志中也没有任何内容。
故事板中每个视图控制器的场景都有UIImageViews
显示 5MB 到 20MB 之间的图像。视图控制器的viewDidLoad
方法仅被调用一次。应用所有资产总大小在200B以下。我正在使用ARC。
我已经使用 Instruments 的内存监视器运行了该应用程序。每次翻页时,该应用程序的实际内存消耗会增加约 80MB,达到 800MB 时就会崩溃(设备是 iPad 3)。
我尝试在视图控制器中添加将所有视图控制器的子视图设置为 nilviewDidDisappear:
方法,但内存消耗保持不变。
当您使用 UINavigationController 时,您推送的每个 ViewController 都会永远保留在内存中(直到您的应用程序退出),除非您的用户按下该特定 ViewController 上的后退按钮。它保留了一堆 ViewController - 可见的位于顶部。
所以简单的答案是不要为此使用 UINavigationController。
我建议构建您自己的 ViewController,它“知道”哪个是下一页和上一页,并在需要时手动加载和删除它们。这样您可以确保内存中一次只有一页(除了在过渡期间 - 也许您可以使用此动画进行过渡http://cocoacontrols.com/platforms/ios/controls/xbpagecurl http://cocoacontrols.com/platforms/ios/controls/xbpagecurl).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)