Может ли автоматически выпущенный NSArray вызвать утечку памяти? - PullRequest
1 голос
/ 15 октября 2011

Я пытаюсь создать NSMutableArray, используя arrayWithArray, добавить два объекта, отсортировать и сохранить в ivar как NSArray. Мой код выглядит так:

NSMutableArray *_mutableItems = [NSMutableArray arrayWithArray:[self.mainViewController.someDictionary allKeys]];

[_mutableItems addObject:@"Buildings"];
[_mutableItems addObject:@"Parking"];

self.curItems = [_mutableItems sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

Когда я профилирую приложение, я получаю утечку памяти для NSArray после того, как представление выскочило. Но что я не понимаю, так это: не все ли эти объекты автоматически выпущены? Увеличиваю ли я количество сохраняемых данных, когда назначаю его свойству экземпляра?

1 Ответ

0 голосов
/ 15 октября 2011

Да, установка свойства, вероятно, увеличивает количество сохраняемых данных.В частности, _mutableItems будет автоматически освобожден, но созданный вами массив с sortedArrayUsingSelector будет сохранен свойством.

Содержит ли объявление вашего свойства retain или copy?

@property (retain) NSArray *curItems;

Если это так, в своем методе dealloc вашего класса обязательно вызовите release для массива;

- (void)dealloc {
    [curItems release];
    [super dealloc];
}
...