I was looking at some sample code on Jeff LaMarche's excellent blog when I came across the following:
- (void)applicationDidFinishLaunching:(UIApplication*)application { CGRect rect = [[UIScreen mainScreen] bounds]; window = [[UIWindow alloc] initWithFrame:rect]; GLViewController *theController = [[GLViewController alloc] init]; self.controller = theController; [theController release]; // ... }
In the .h, we see that "window" and "controller" are ivars declared as so:
@interface OpenGLTestAppDelegate : NSObject { UIWindow *window; GLViewController *controller; } @property (nonatomic, retain) IBOutlet UIWindow *window; @property (nonatomic, retain) IBOutlet GLViewController *controller; @end
My question is: Why are "window" and "controller" assigned in different ways?
I think I understand why each kind of assignment works (keeping track of retain count), but why are they assigned in different ways? Specifically, why isn't controller assigned in the same way window is with a single line like so without going through the setter:
controller = [[GLViewController alloc] init];
In general, when would you use the single line method and when would you use the multiple line method?
Thanks.