- (void)applicationDidFinishLaunching:(UIApplication*)application { CGRect rect = [[UIScreen mainScreen] bounds];
window = [[UIWindow alloc] initWithFrame:rect];
GLViewController *theController = [[GLViewController alloc] init]; self.controller = theController; [theController release];
// ... }
在.h文件中,我们可以看到"window"和"controller"被声明为实例变量:
@interface OpenGLTestAppDelegate : NSObject { UIWindow *window; GLViewController *controller; } @property (nonatomic, retain) IBOutlet UIWindow *window; @property (nonatomic, retain) IBOutlet GLViewController *controller; @end
我的问题是:为什么"window"和"controller"以不同的方式赋值?
我认为我知道每种赋值方式的原理(跟踪保留计数),但是为什么它们以不同的方式赋值?具体而言,为什么没有像window那样通过单行代码进行控制器的赋值,而是要通过setter方法进行赋值?
请注意,本文中的html标记应保留。
一般情况下,何时使用单行方法,何时使用多行方法?
谢谢。