我知道这是一个愚蠢的问题,但这是我必须制作的第一个真正的应用程序,我没有人问,我查找了这个问题,没有发现其他类似的问题。
我的应用程序在真实设备上崩溃,毫无例外。我在模拟器中看到使用了太多内存,过了一段时间我得出的结论是我正在使用的图片应该受到责备。
应用程序的结构是这样的:它有8个viewControllers用于不同的东西:例如,它以一个让用户选择他/她将要玩的头像开始,这里我有两张图片,接下来是一个viewController,显示该头像的统计信息,这里是另一张图片,依此类推。问题是每张图片都使用40MB的RAM进行显示,所以当用户进入游戏所在的gameviewCOntroller时,应用程序会使用超过300MB的RAM。因此,在iPAD 2或iphone 4等设备上崩溃,但在iphone 5上没有崩溃。
我尝试设置图像来自" images.xcassets"来自" .atlas"文件夹,但结果完全一样。图片的尺寸不超过1500x1999像素,它们是png格式。
另外,我看到如果应用程序直接启动到giveViewController它将使用180MB,所以另一个viewController保留在内存或类似的东西。我应该清楚"清楚"他们或类似的东西?
//-------update-------
这是我从仪器获得的:
答案 0 :(得分:5)
内存在移动设备上是一个大问题,你的问题没有明确答案,但我可以给你一些建议:
widthXheightXNumber_of_channelXbit_for_channel
CATiledLayer
-imageNamed
它缓存图像,即使Apple说这个缓存是在内存压力下释放的,你也没有很多控制权来避免崩溃可能为时已晚
这些是一般性建议,如果符合您的要求,则取决于您。
答案 1 :(得分:1)
你一定要遵循安德里亚的建议。 此外,您应该考虑将图像大小设置为您的需要。你说你已经尝试从xcassets设置它们,这样你就可以完全控制你正在加载的图像,这很棒(与下载你无法修改的图像相比)。
我强烈建议您使用资产目录文件read some documentation。这将允许您为更大的屏幕提供高分辨率图像,这些屏幕也具有更多内存,而旧设备则更小,这就是您想要的。
此外,请注意,对于大多数移动设备而言,1500x1999px仍然是一个非常大的尺寸。 有关屏幕尺寸的更多链接: