gpt4 book ai didi

ios - IOS App占用内存大小

转载 作者:行者123 更新时间:2023-11-29 00:18:51 28 4
gpt4 key购买 nike

我创建了一个带有 12 个 View Controller 的应用程序,它有很多图形(图像文件)

当我启动应用程序时,我注意到当我在 View Controller 中移动时内存会增加。当我移动完所有 Controller 后,内存为 530Mb

所以我的问题是:-

a) 是否需要使用大量内存b) 我应该担心吗c)当我四处导航时,如何从内存中删除 View Controller ..例如,我有一个用于登机的 View Controller ,但是一旦单击“跳过”或“开始”,我就会转到下一个 View Controller ,所以理论上它不会不需要再加载..

想法?

我在具有 3Gbm 的 iPhone 7 Plus 上运行,但希望能够在 iPhone SE 及以上的其他手机型号上运行该应用程序。不过我注意到 iPhone SE 的内存配置约为 50%,但我认为这是因为它没有像 plus 手机那样加载 x3 图像

最佳答案

a) is this a lot of memory to be using

很多是一个相对术语,530Mb 是否很多完全取决于应用程序正在做什么以及它是什么类型的应用程序!如果它是一款具有丰富图形的游戏,我不会太担心,但如果它是一个普通的实用程序应用程序,我会担心!

b) should I be worried

随着用户加载应用程序的各种屏幕,内存逐渐积累/增加是一种非常常见的情况。如果它不断增加并且永远不会下降,您应该感到烦恼。每次 VC 加载时,它可能会加载大量图形,或者可能会分配大量变量并消耗大量内存来执行其功能。这是相当公平的。但是一旦用户从应用程序导航堆栈中弹出 VC,VC 分配的所有内存都应该返回,应用程序消耗的总内存应该下降。理想的内存足迹看起来像一个波浪,它达到峰值并在 VC 弹出时下降。如果那没有发生,你就有麻烦了:)

c) how can I remove view controllers from memory as I navigate round

  1. 使用正确的导航技术。不要一直将 VC 推送到导航 Controller 堆栈,除非您确实需要将该 VC 实例保留在内存中。推送到导航堆栈的所有 VC 将继续保存在内存中,直到用户终止应用程序或 iOS 决定在收到内存警告时终止应用程序。

  2. 在每个 VC 中编写 deinit/dealloc 并确保每次用户弹出 VC 时都会调用它,方法是在按下后退按钮时点击返回按钮,或者在 VC 以模态方式显示时关闭 VC。确保调用每个 VC 的 deinit 是确保 VC 不会占用任何不必要内存的最佳方法。

  3. 确保您的 VC 中没有任何代码会导致保留循环并将对象永远保留在内存中。示例:如果您的 VC 声明了一个 block 并持有对 block 的强引用,并且如果您传递 self 来阻止您的 block ,则 self 将永远不会被释放。保留循环的经典例子。确保您的代码不会产生此类死锁

  4. 除非必要,否则切勿通过使用 strong/retain 来强握任何东西。

  5. 使用instrument来查找每个对象的内存泄漏和引用计数,以确保您的应用程序中没有内存泄漏。

关于ios - IOS App占用内存大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44551496/

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