iPhone应用程序内存泄漏与UIImage动画?在设备上测试问题

时间:2010-06-07 20:22:53

标签: iphone memory-leaks uiimage imagenamed

我有一个在模拟器中工作正常但在设备上崩溃的动画。我收到以下错误...

编程接收信号:“0”。 由于信号10(SIGBUS)

,调试器已退出

一些调查表明UIImages没有被释放,我有内存泄漏。我是新手,所以有人可以告诉我这是否可能是原因?如果你也可以告诉我如何解决它,那将是惊人的。

图像分别为480px x 480px和约25kb。我的代码如下......

NSArray *rainImages = [NSArray arrayWithObjects:
                           [UIImage imageNamed:@"rain-loop0001.png"],
                           [UIImage imageNamed:@"rain-loop0002.png"],
                           [UIImage imageNamed:@"rain-loop0003.png"],
                           [UIImage imageNamed:@"rain-loop0004.png"],
                           [UIImage imageNamed:@"rain-loop0005.png"],
                           [UIImage imageNamed:@"rain-loop0006.png"],  
                           //more looping images
                           [UIImage imageNamed:@"rain-loop0045.png"],
                           [UIImage imageNamed:@"rain-loop0046.png"],
                           [UIImage imageNamed:@"rain-loop0047.png"],
                           [UIImage imageNamed:@"rain-loop0048.png"],
                           [UIImage imageNamed:@"rain-loop0049.png"],
                           [UIImage imageNamed:@"rain-loop0050.png"],
                           nil];


    rainImage.animationImages = rainImages;
    rainImage.animationDuration = 4.15/2;
    rainImage.animationRepeatCount = 0;
    [rainImage startAnimating];
    [rainImage release];

由于

2 个答案:

答案 0 :(得分:0)

我很确定你会崩溃,因为[NSArray arrayWithObjects:]会返回一个自动释放的对象,你要将它存储到rainImage中。然后在底部你再次释放rainImage,从而释放它。

答案 1 :(得分:0)

问题的根源是你的主内存不足,因为你在内存中有太多的解压缩图像,请参阅我对uiimage-animation-causing-app-to-crash-memory-leaks的回答,因为你不应该使用UIImageView.animationImages。