NSMutableArray освобождение / уничтожение - PullRequest
1 голос
/ 30 января 2010

Следующий код в моей функции (выполняется в цикле) заставляет мою программу использовать все больше и больше памяти, пока она не выйдет из строя. Что я делаю не так?

- (void) processTrackValues:(NSMutableArray*) tags {  
    NSImage* trackArt = [tags objectAtIndex:5];  
    NSMutableArray* tempArtArray = [[NSMutableArray alloc] init];  
    [tempArtArray addObject:trackArt];  
    [tempArtArray release];  
}

Я тоже пробовал:

- (void) processTrackValues:(NSMutableArray*) tags {  
    NSImage* trackArt = [tags objectAtIndex:5];  
    NSMutableArray* tempArtArray = [[NSMutableArray alloc] init];  
    [tempArtArray addObject:trackArt];  
    [trackArt release];  
    [tempArtArray release];  
}

Редактировать: вот дополнительная информация об окружающем коде. Я также добавил больше кода к образцу для большей картины.

  • trackArt - это указатель NSImage на один из аргументов этой функции.
  • Объект NSImage, на который указывает trackArt, создается вне этой функции.
  • Я выделяю и освобождаю tempArtArray каждую итерацию цикла (поскольку функция вызывается для каждой итерации цикла)

Ответы [ 2 ]

2 голосов
/ 30 января 2010

(сейчас опубликовано дважды) метод - нонсенс. В конце метода метод ничего не достиг.

Разместите реальный код.

В частности, как вы на самом деле создаете NSImage экземпляры? Откуда вы знаете, что именно этот метод вызывает раздувание и возможный сбой?

0 голосов
/ 30 января 2010

Можете ли вы опубликовать код окружающего цикла, чтобы получить большую картину?

Вы выделяете и выпускаете tempArtArray для каждой итерации цикла? Если да, то можете ли вы вместо этого выделить его вне цикла и использовать его повторно?

Как создаются trackArt объекты?

...