Простой вопрос управления памятью Obj-C - PullRequest
1 голос
/ 12 мая 2010

Это пример кода из книги

// On launch, create a basic window
- (void)applicationDidFinishLaunching:(UIApplication *)application { 
 UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
 UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[[HelloController alloc] init]];
 [window addSubview:nav.view];
 [window makeKeyAndVisible];
}

Но release никогда не требуется ни для window, ни для nav.

  1. Релиз должен быть вызван, так как alloc был вызван, верно?
  2. Если # 1 верно, то мне нужно сохранить ссылку на каждый из них в переменной экземпляра, чтобы освободить их в dealloc?

Возможно, я не прав во всем ...

1 Ответ

4 голосов
/ 12 мая 2010

Да, нормально.

Однако;UIWindow обычно не выпускается, как и корневой контроллер навигации, ну и в чем смысл.Они действуют в течение всего срока действия вашего заявления.

Кроме того, получите новую книгу;сейчас мы используем Interface Builder для этого материала.

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