#iphone #ios #memory-management #uinavigationcontroller
#iPhone #iOS #управление памятью #uinavigationcontroller
Вопрос:
-(IBAction) btnLoginPressed{
Login *loginOverView = [[Login alloc] initWithNibName:@"Login" bundle:nil];
[self.navigationController pushViewController:loginOverView animated:YES];
[loginOverView release];
}
loginOverView никогда не будет выпущен?
Ответ №1:
Как вы думаете, почему она никогда не будет выпущена?
Вы поступили правильно, уравновесив инициализацию с выпуском.
(во второй строке NavigationController сохраняет логин, но он сам выпустит его, когда это будет необходимо)
Комментарии:
1. Согласен. Метод pushViewController: animated: отвечает за сохранение / освобождение ссылки, которую вы ему передаете. Вам нужно беспокоиться только о том, что вы выделяете.
Ответ №2:
Вы освободили объект, владельцем которого вы стали с помощью alloc
или new
. Итак, в соответствии с рекомендациями по управлению памятью вы должны release
это. Итак, вы поступили правильно.