как исправить эту утечку памяти? - PullRequest
1 голос
/ 26 ноября 2011
- (void)addChild:(MyTreeNode *)newChild {
    newChild.parent = self;
    [self checkForSelectedNode:newChild];
    [self.children addObject:newChild];

}

В этом коде children является свойством используемого класса. Строка [self.children addObject:newChild];

показывает 100% утечку при отладке с помощью инструментов.он правильно освобожден в методе dealloc. Пока он показывает утечку. Как устранить эту утечку?

1 Ответ

2 голосов
/ 26 ноября 2011

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

Объяснение: На одном уровне узел сохраняет своего родителя, а родительский - своего потомка. Этот удерживающий цикл не даст себя освободить.

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