Это немодифицированный код из шаблона Apple Utility Aplication:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
 MainViewController *aController = [[MainViewController alloc] initWithNibName:@"MainView" bundle:nil];
 self.mainViewController = aController;
 [aController release];
 mainViewController.view.frame = [UIScreen mainScreen].applicationFrame;
 [window addSubview:[mainViewController view]];
 [window makeKeyAndVisible];
}
Когда mainViewController назначается aController, указано ключевое слово self:
 self.mainViewController = aController;
Однако, когда установлен кадр mainViewController, ключевое слово self не требуется:
 mainViewController.view.frame = [UIScreen mainScreen].applicationFrame;
Если я удалю ключевое слово self из первого примера, программа выйдет из строя с сообщением:
objc[1296]: FREED(id): message view sent to freed object=0x3b122d0
Если я добавлю ключевое слово self ко второму примеру, программа будет работать нормально.
Может ли кто-нибудь объяснить, почему self требуется в первом случае, но не во втором? Я предполагаю, что в обоих случаях mainViewController ссылается на ту же переменную экземпляра.