这是来自Apple iPhone“实用程序”模板的未经修改的代码:
- (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都引用相同的实例变量。
慕村225694
拉风的咖菲猫
慕尼黑5688855