Это возможная утечка памяти?

#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 это. Итак, вы поступили правильно.