我试图在长时间休息后选择Obj-C和iPhone开发,所以我重新阅读Apress的初期iPhone 3开发。
现在,我正在努力解决以下问题:
#import "BlueViewController.h"
...
@synthesize blueViewController;
...
- (void)viewDidLoad {
BlueViewController *blueController = [[BlueViewController alloc]
initWithNibName:@"BlueView" bundle:nil];
self.blueViewController = blueController;
[self.view insertSubview:blueController.view atIndex:0];
//Why don't we use the following instead of the above?
//[self.view insertSubview:self.blueViewController.view atIndex:0]?
[blueController release];
[superViewDidLoad];
}
对我来说似乎更合乎逻辑,因为我们只是将blueController分配给self.blueViewController,我们应该使用后者而不是前者。这个例子背后的原因是什么?我的方式有什么问题?
答案 0 :(得分:2)
他们都指向相同的参考。没有区别,真的。你的方法也适用。
答案 1 :(得分:1)
归结为清晰度。编写您认为最易读的代码。
我倾向于:
.h文件
@property (nonatomic, retain) BlueViewController *blueController;
.m文件
@synthesize blueController=_blueController;
和
- (void)viewDidLoad {
_blueController = [[BlueViewController alloc]
initWithNibName:@"BlueView" bundle:nil];
[self.view insertSubview:self.blueController.view atIndex:0];
[superViewDidLoad];
}
_
帮助我跟踪直接变量访问(_blueController)与作为属性访问(self.blueController)。