我正在开发一个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];
}
我在第二次点击时一次又一次地出现内存泄漏(第一次点击时运行正常),应用程序崩溃了。
我犯错误的地方?请帮助/建议我实施它的正确方法。
感谢。
答案 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
阵列,不要添加相同的图片。