NSMutableArray - removeallobjects производит утечку - PullRequest
1 голос
/ 30 июля 2010

У меня есть mutableArray, который я заполняю объектами. Когда я пытаюсь пополнить массив, я сначала использую removeAllObjects - что приводит к утечке памяти ...

Свойства объекта синтезируются, сохраняются и высвобождаются в dealloc.

Массив инициализируется в viewDidLoad следующим образом:

theArray = [[NSMutableArray alloc] initWithCapacity:10];

... и он сохраняется и синтезируется. (@property (nonatomic, retain) NSMutableArray *theArray)

Я добавляю объекты в цикл while так:

myObject *theObject = [[myObject alloc] init];

theObject.someProperty = @"theprop";

[theArray addObject: theObject];

[theObject release];

затем при следующем вызове метода я удаляю все объекты следующим образом:

[theArray removeAllObjects];

Вот где происходит утечка. Если я прокомментирую эту строку, утечка не появится. Значит, я что-то не так делаю в своем объекте?

Ответы [ 2 ]

2 голосов
/ 30 июля 2010

Похоже, проблема решена ...

а) Я не осознавал, что когда я использую инструменты, приложение не компилируется перед запуском - таким образом, некоторые из внесенных мной изменений былине вступает в силу при использовании инструментов.Итак, теперь я сначала строю и запускаю после изменения и , а затем запускаю его в инструментах.

b), таким образом, я не знаю, что решило проблему.Но, возможно, у меня неверный метод dealloc в моем объекте.Я использовал:

[super dealloc];

[myProperty release];

, а не наоборот:

[myProperty release];
[super dealloc];

Спасибо за помощь, хотя!

1 голос
/ 30 июля 2010

Имеет ли myObject какие-либо сохраненные свойства? Если так, вы устанавливаете их в ноль в сообщении dealloc? Если нет, то при освобождении он не будет освобождать объекты, для которых установлены его свойства.

...