重用相同的NSMutableArray

时间:2011-08-23 11:33:44

标签: nsmutablearray

我正在开发一个iphone应用程序,我必须在单击按钮后从不同的文件夹中选择图像。我在UI上有5个UIButtons,每个5个Images文件夹包含大约100个图像。我为所有UIButtons图像使用相同的数组。我通过以下函数填充数组:

-(void)playAnimations:(NSString*)animationName:(int)photoCount
{

NSString *photoPathName;
UIImage *object = [[UIImage alloc]init];

for (int i=1; i<photoCount+1; i++)
{
    NSString *imagesName=@"";
    if (i<10) {
        imagesName =[photoPathName stringByAppendingFormat:@"000%d",i];
    }
    else if(i>9 && i<100)
        imagesName =[photoPathName stringByAppendingFormat:@"00%d",i];
    else if(i>99 && i<1000)
        imagesName =[photoPathName stringByAppendingFormat:@"0%d",i];

    object = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imagesName ofType:@"png"]];//[UIImage imageNamed:imagesName];
    [self.arrayImagesName addObject:object];

}   
self.animationImage.animationImages = self.arrayImagesName;

self.animationImage.animationDuration =durationTime ;// defaults is number of animation images * 1/30th of a second
self.animationImage.animationRepeatCount = 1; // default is 0, which repeats indefinitely
[self.animationImage startAnimating];
}

我在第二次点击时一次又一次地出现内存泄漏(第一次点击时运行正常),应用程序崩溃了。

我犯错误的地方?请帮助/建议我实施它的正确方法。

感谢。

1 个答案:

答案 0 :(得分:1)

我认为这是问题所在:

UIImage *object = [[UIImage alloc]init];

你应该在循环中初始化这个object变量,

for (int i=1; i<photoCount+1; i++)
{
    // some code
    UIImage *object = [[UIImage alloc]initWithContentOfFile:[[NSBundle mainBundle] pathForResource:imagesName ofType:@"png"]];
    [self.arrayImagesName addObject:object];
}   

当您按下按钮时,只需使用self.arrayImagesName阵列,不要添加相同的图片。