Eri*_*ric 3 uiimageview ios automatic-ref-counting uistoryboard
我正在为iPad制作一本交互式书籍,我正在使用它UINavigationController来实现页面与下一页之间的导航.当用户翻页时,下一页被推到导航堆栈的顶部.
我现在15页进入应用程序,当我尝试从第14页转到第15页时应用程序崩溃.控制台中没有错误消息,设备的崩溃日志中也没有任何内容.
故事板中的每个视图控制器场景都UIImageViews显示介于5MB和20MB之间的图像.视图控制器的viewDidLoad方法只调用一次.所有应用程序资产的总大小低于200B.我正在使用ARC.
我使用Instruments的Memory Monitor运行了应用程序.每次翻页时应用程序的实内存消耗量增加约80MB,当达到800MB时该应用程序崩溃(该设备是iPad 3).
为什么这么大的内存消耗?这是因为故事板场景中的UIImageView缓存了图像吗?
使用UINavigationController和ARC 时,释放内存的最佳方法是
什么?
我尝试在视图控制器的viewDidDisappear:方法中将所有视图控制器的子视图添加到nil ,但内存消耗保持不变.
当您使用UINavigationController时,您推送的每个ViewController都将永久保留在内存中(好,直到您的应用程序退出),除非您的用户按下该特定ViewController上的后退按钮.它保留了一堆ViewControllers - 顶部有一个可见的.
所以简单的答案就是不要使用UINavigationController.我建议构建自己的ViewController,它"知道"哪个是下一页和上一页,并在需要时手动加载和删除它们.这样,您可以确保一次只在内存中有一个页面(转换期间除外 - 也许您可以将此动画用于过渡http://cocoacontrols.com/platforms/ios/controls/xbpagecurl).
| 归档时间: |
|
| 查看次数: |
2086 次 |
| 最近记录: |