iPhone和iPod中可用的最大运行时内存?

时间:2009-09-26 19:00:30

标签: iphone

我正在开发一个应用程序,其运行时内存高达6-7MB。当我运行应用程序时它工作正常,但有时它会在设备上中断或显示白色屏幕而不是实际视图。当我做一些测试时,我发现它触发了didRecieveMemoryWarning事件。

它是图像的becoz,就像我使用了很多动画,每次我调用图像动画功能来获取图像数组。因为我使用的是imageWithName,所以每次都需要调用。此外,我不应该释放用于图像的内存,因为我不拥有它。我认为这不是处理它的正确方法。有没有什么好方法可以解决这个问题。有没有人有更好的想法,或者这不是问题。

请注意,代码不会在模拟器上中断,因为代码之间没有中断。

2 个答案:

答案 0 :(得分:1)

最大内存量会发生变化,可能取决于很多因素。

您不应该真正针对设置的内存大小,只需优化代码中的每个字节,从最大的低效率开始,然后向后工作。您可以使用Instruments中的ObjectAlloc工具深入了解负责最大数量分配的内容。它还可以告诉您调用的顺序 - 堆栈 - 导致每次分配。

我建议通过一些CoreAnimation示例来获取更多信息,禁止某人在这里使用一个有用的,具体的示例。

答案 1 :(得分:0)

如果您知道内存使用量来自可以丢弃的图像,那么您可以使用[[UIImage alloc] initWithContentsOfFile:...]并根据需要缓存和丢弃。

然而,听起来你不是肯定的问题。我强烈建议您熟悉Apple提供的一些分析工具,例如Leaks和Object Allocations。这可能会指向您可以丢弃的一些大对象分配。