Obj-C / Cocoa实例/指针/属性需要帮助理解一个例子

时间:2011-05-09 22:54:53

标签: objective-c cocoa

我试图在长时间休息后选择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,我们应该使用后者而不是前者。这个例子背后的原因是什么?我的方式有什么问题?

2 个答案:

答案 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)。