Чтобы расширить ответ Дона, может быть несколько странно сказать, что «вы передаете право собственности на объект текущему пулу автоматического выпуска». Это может быть неправильно понято, чтобы означать, что объект гарантированно будет разрушен, когда пул авто-выпуска истощен. Это не правильно (хотя это произойдет в этом случае). При отправке -autorelease
запрашивается, чтобы пул автоматического выпуска отправлял сообщение -release
при его опустошении. Если это сообщение -release
сделает retainCount = 0, то объект будет уничтожен.
Итак, чтобы сделать то, что рекомендует Дон, вам нужно создать ивар, чтобы отслеживать этот контроллер вида. Его объяснение того, почему взгляд исчезает, совершенно верно; но вы не хотите просто пропускать контроллер представления. Вы хотите удержать его и отпустить, когда закончите.
@interface ... {
LoginViewController *_loginViewController;
}
@property (readwrite, retain) LoginViewController *loginViewController;
@implementation ...
@synthesize loginViewController = _loginViewController;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
self.loginViewController = [[[LoginViewController alloc] initWithNibName:@"LoginView" bundle:nil] autorelease];
[window addSubview: [loginViewController view]];
[window makeKeyAndVisible];
}
- (void)dealloc {
[_loginViewController release]; _loginViewController = nil;
[super dealloc];
}