应用程序崩溃在iPhone上

时间:2009-06-17 13:52:54

标签: iphone

我正在开发一款游戏,我必须在手指滑动上加载图像。为此我在加载视图本身时加载了所有大小为(788x525)的图像22。然后在手指上滑动我刚刚在视图上添加了图像。

这在iTouch上运行良好,但在显示近12张图像后,iPhone游戏崩溃。

这是我添加图片的方式,graphicsArray是NSMUTableArray。

for ( int i=0; i<=totalNoofPages;i++){
    NSString * graphicsFileName = @"Page";
    graphicsFileName =
                [graphicsFileName
                 stringByAppendingString:[NSString stringWithFormat:@"%d", i]];
    UIImage *image =
               [[UIImage alloc] initWithContentsOfFile:
               [[NSBundle mainBundle] pathForResource:graphicsFileName
                                      ofType:@"jpg"]];
    GraphicsImages =
               [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 480,320 )];
    GraphicsImages.image = image;
    [image release];
    [GraphicsImages setCenter:center];

    GraphicsImages.transform = CGAffineTransformMakeRotation(M_PI/2);
    [graphicsArray insertObject:GraphicsImages atIndex:i];
}

在我写的手指滑动上,pageNo是将要显示的页面数。

GraphicsImages = [graphicsArray objectAtIndex:pageNo];
[self addSubview:GraphicsImages];

有没有办法从子视图中释放以前加载的图像,因为它可能会保留在堆栈上,或者是由于图像尺寸较大????

请在这种情况下帮助我。

提前致谢。

此致 维沙尔。

2 个答案:

答案 0 :(得分:0)

你因缺乏记忆而崩溃了吗?

您可以尝试预加载上一个,当前和&amp;仅限下一张图片,并尽快发布。在内存中加载22张图片会占用相当多的空间。

答案 1 :(得分:0)

你可以提供应用程序崩溃时遇到的错误吗?了解触发的异常将有助于确定究竟发生了什么。

我可以告诉您,您没有在GraphicsImages循环中释放for变量,因此导致内存泄漏。不过,我认为这不足以导致崩溃。在任何情况下,请执行以下操作:

[ graphicsArray insertObject:GraphicsImages ];
[ GraphicsImages release ];

请注意,您不需要在案例中指定插入索引,因为这些项目将按顺序添加。此外,当您将对象插入数组时,它是retained,因此您可以安全地将其释放。