Где утечка памяти в этой маленькой функции - PullRequest
1 голос
/ 30 января 2010

Instruments сообщает, что у меня есть утечка в этой функции. Я новичок в Obj-C, так что извините за то, что упустил что-то очевидное, к тому же я не уверен, что я все делаю здесь.

(void) selectList:sender {
NSMutableString *nibName = @"myController";
MyOwnController *study = [[MyOwnController alloc] initWithNibName:nibName bundle:nil];
study.title = @"Fundamentals";
study.listNameToLoad = @"funds";
[self.navigationController pushViewController:study animated:YES];
[nibName release];
[study.title release];
[study.listNameToLoad release];
[study release];
study = nil;
}

Похожие вопросы. После того, как вы выполните pushViewController, следует ли вам всегда делать release на контроллере, который вы только что положили в стек?

1 Ответ

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

Вы должны сначала прочитать это .

Таким образом, вы освобождаете, только если вы создаете или копируете. Вы выпустили довольно много переменных, которые вы не создали / не скопировали и не несете ответственности за их выпуск. Следовательно, вы не должны выпускать nibName, study.title & study.listNameToLoad.

Опять же, вы должны освободить свойства 'title' и 'listNameToLoad' в методе dealloc контроллера.

Что касается вашего связанного вопроса, вы можете освободить контроллер, только если вам больше не нужна ссылка. Если вы решите сохранить ссылку, ее нужно отозвать позже, когда она вам больше не нужна.

...