Возобновление того же NSMutableArray - PullRequest
1 голос
/ 23 августа 2011

Я работаю над приложением для iphone, где после нажатия кнопки мне нужно выбирать изображения из другой папки.У меня есть 5 кнопок UIB на пользовательском интерфейсе и 5 папок изображений, каждая из которых содержит около 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 Ответ

1 голос
/ 02 сентября 2015

Я думаю, что это проблема:

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, не добавляйте к нему одно и то же изображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...