我正在开发一个应用程序,其运行时内存高达6-7MB。当我运行应用程序时它工作正常,但有时它会在设备上中断或显示白色屏幕而不是实际视图。当我做一些测试时,我发现它触发了didRecieveMemoryWarning事件。
它是图像的becoz,就像我使用了很多动画,每次我调用图像动画功能来获取图像数组。因为我使用的是imageWithName,所以每次都需要调用。此外,我不应该释放用于图像的内存,因为我不拥有它。我认为这不是处理它的正确方法。有没有什么好方法可以解决这个问题。有没有人有更好的想法,或者这不是问题。
请注意,代码不会在模拟器上中断,因为代码之间没有中断。
答案 0 :(得分:1)
最大内存量会发生变化,可能取决于很多因素。
您不应该真正针对设置的内存大小,只需优化代码中的每个字节,从最大的低效率开始,然后向后工作。您可以使用Instruments中的ObjectAlloc工具深入了解负责最大数量分配的内容。它还可以告诉您调用的顺序 - 堆栈 - 导致每次分配。
我建议通过一些CoreAnimation示例来获取更多信息,禁止某人在这里使用一个有用的,具体的示例。
答案 1 :(得分:0)
如果您知道内存使用量来自可以丢弃的图像,那么您可以使用[[UIImage alloc] initWithContentsOfFile:...]并根据需要缓存和丢弃。
然而,听起来你不是肯定的问题。我强烈建议您熟悉Apple提供的一些分析工具,例如Leaks和Object Allocations。这可能会指向您可以丢弃的一些大对象分配。