Iphone pushViewController релиз - PullRequest
       5

Iphone pushViewController релиз

0 голосов
/ 04 января 2011

когда я звоню:

        ChooseDateView *nextController = [[ChooseDateView alloc] initWithNibName:@"ChooseDateView" bundle:nil];
        [self.navigationController pushViewController:nextController animated:YES];

нужно ли вызывать [следующий релиз контроллера]?

спасибо

Ответы [ 4 ]

12 голосов
/ 04 января 2011

Да, необходимо вызывать

[nextController release]

, в противном случае сделать объект как авто-релиз

ChooseDateView *nextController = [[[ChooseDateView alloc] initWithNibName:@"ChooseDateView" bundle:nil] autorelease];
2 голосов
/ 04 января 2011

Необходимо вызвать [releaseController release], иначе как освободится выделенная память?

1 голос
/ 04 января 2011

Да.

Вы выпускаете или автоматически выпускаете только свои собственные объекты.

Вы вступаете во владение объектом, если создаете его с помощью метода, имя которогоначинается с «alloc» или «new» или содержит «copy» (например, alloc, newObject или mutableCopy), или если вы отправляете ему сообщение сохранения.

Вы используете release или autorelease, чтобы отказаться от владенияобъект.autorelease просто означает «отправить сообщение о выпуске в будущем» (чтобы понять, когда это произойдет, см. «Пулы автоматического освобождения»).

Правила управления памятью

0 голосов
/ 04 января 2011

Поскольку вы выделили память, вы являетесь владельцем объекта. Также после выделения этот объект помещается с помощью pushViewController. Таким образом, мы можем безопасно выпустить объект. и это должно быть сделано, поскольку вы владеете объектом. Вы также можете автоматически выпустить его.

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