我的iPhone应用程序应该占用多少内存?

11

我为iPhone创作了一个二十一点应用程序。运行时它占用70 MB的内存。这是不是太高了?对我来说似乎有点高。或者考虑到我使用了一些图形/动画(用于卡牌、筹码等),这正常吗?


1
你应该没问题的... https://dev59.com/W2Ei5IYBdhLWcg3wq9tD - PCoder123
谢谢您的回复!我也想知道,总体来说,是否在使用比应用程序类型所需更多的内存?我很好奇从内存使用角度来看,我的编码是否非常低效。您有没有想法这对于这种类型的应用程序来说是不是达到了高端水平?谢谢。 - mattman88
当你说你正在使用动画时,是指大量的图形资源还是仅指用于GPU工作的CoreAnimation? - Tommy
3
没有看到具体实现,很难下结论。你有用过Instruments运行应用程序吗?它可以展示代码中消耗最多内存的操作。如果你不熟悉Instruments,我建议你至少浏览一下这个教程,看看它提供了哪些功能:http://www.raywenderlich.com/23037/how-to-use-instruments-in-xcode - PCoder123
1
@Tommy 我只是在使用CoreAnimations。具体来说,我使用的是animateWithDuration:delay:options:animations:completion方法。 - mattman88
1
@PCoder123 我现在就会阅读那篇教程。非常感谢您的建议。我真的非常感激。 - mattman88
2个回答

16

相较于你的游戏,像井字棋这样的不那么要求的游戏只需要大约 10 MB 的空间。但是,你的游戏有动画效果。我假设它是 2D 动画,因为 3D 游戏需要约 500 MB,而更高级的游戏需要接近 1 GB。

除了看代码正在执行什么,它似乎在一个很好的 2D 黑杰克应用程序的可接受范围内。

话虽如此,查看苹果公司关于 降低应用程序内存使用 的建议也不会有坏处。


太棒了,非常感谢!是的,只需要2D动画。我一定会查看你建议的那个页面! - mattman88

9
观察:仅为了节省内存而使用更少的内存并没有任何优势。有500MB未使用的RAM比有450MB好吗?
因此,在iOS中常用的机制是NSCache。它是一个关联映射,会保留一些东西,除非这样做会导致过度的内存压力。这种模式通常也被广泛使用。除非这样做会给其他人带来问题,否则请使用可用的资源。这就是为什么存在低内存警告的原因。这些缓存由开发人员和系统使用,例如每次调用[UIImage imageNamed:]。
所以,除此之外,还取决于您的资源,您的视图如何排列以及其他一些因素。
Retina iPhone 5S的分辨率为1136x640像素。因此大约需要2.8mb的数据。您提到了动画:您是否有足够多的不同资源可以累加到25个屏幕的动画?如果是这样,那就是70mb。
您的视图呢?您是否保留了许多独立视图?每个视图都有一个CALayer,正常情况下意味着GPU占用空间。与NSCache一样,这样的内存会保留,除非内存压力表明需要采取其他措施(即使如此,当前层次结构中的任何内容也必须保留其存储)。

3
哇,你的2.8 MB 数据那件事基本上准确无误,我刚刚重新测试了一下,我的应用程序大约有30屏幕的动画,并且占用了大约80MB的内存。我喜欢学习新东西。谢谢! - mattman88

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接