我正在开发一款游戏,我必须在手指滑动上加载图像。为此我在加载视图本身时加载了所有大小为(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];
有没有办法从子视图中释放以前加载的图像,因为它可能会保留在堆栈上,或者是由于图像尺寸较大????
请在这种情况下帮助我。
提前致谢。
此致 维沙尔。
答案 0 :(得分:0)
你因缺乏记忆而崩溃了吗?
您可以尝试预加载上一个,当前和&amp;仅限下一张图片,并尽快发布。在内存中加载22张图片会占用相当多的空间。
答案 1 :(得分:0)
你可以提供应用程序崩溃时遇到的错误吗?了解触发的异常将有助于确定究竟发生了什么。
我可以告诉您,您没有在GraphicsImages
循环中释放for
变量,因此导致内存泄漏。不过,我认为这不足以导致崩溃。在任何情况下,请执行以下操作:
[ graphicsArray insertObject:GraphicsImages ];
[ GraphicsImages release ];
请注意,您不需要在案例中指定插入索引,因为这些项目将按顺序添加。此外,当您将对象插入数组时,它是retained
,因此您可以安全地将其释放。