知道为什么会崩溃吗?我做错了什么?
谢谢!
-(IBAction)animationOneStart {
NSMutableArray* arrayOfImages = [[NSMutableArray alloc]initWithCapacity:10];
for(int count = 1; count <= 22; count++)
{
NSString *path = [NSString stringWithFormat:@"testDance3_%03d.jpg", count];
UIImage* img = [[UIImage alloc]initWithContentsOfFile:path];
[arrayOfImages addObject:img];
[img release];
}
loadingImageView.animationImages = arrayOfImages;
[arrayOfImages release];
loadingImageView.animationDuration = 3;
loadingImageView.animationRepeatCount = 1; //Repeats indefinitely
[loadingImageView startAnimating];
loadingImageView.animationImages = nil;
[loadingImageView release];
}
答案 0 :(得分:1)
尝试初始化您的NSMutableDictionary,其容量与您将存储在其中的相同数量的对象相同。如果这不起作用,我会尝试评论这两行:
//loadingImageView.animationImages = nil;
//[loadingImageView release];
在此代码的范围内,您的其他调用显得平衡。但是我们无法看到loadingImageView中发生了什么,所以我的猜测是,loadImageView本身或它的动画都是过早发布的。
答案 1 :(得分:1)
我看不到足够的代码确认这一点,但有几件可疑的事情在这里:
[loadingImageView startAnimating];
loadingImageView.animationImages = nil;
[loadingImageView release];
因此,在动画运行时,您正在发布正在动画的图像?或者它本身就是动画的视图?可能是其中一个或两个都是问题。
如果动画应无限期运行,则需要无限期地保持视图。如果它最终停止,你应该在它停止后释放它。
答案 2 :(得分:0)
传递nil时,调用addObject将失败。当系统内存不足并且无法分配更多内容时,UIImage可能为零。当发生这种情况取决于您的图像有多大,但基本上您可以确定稍后使用loadingImageView.animationImages与同时分配所有UIImage对象相结合将导致您的应用程序崩溃。另见playing-looping-images-sequence-in-uiview。你基本上需要一种不同时保存内存中所有图像的不同方法,未压缩的图像会消耗过多的内存。