Given the property declaration below, does method (A) work in exactly the same way as method (B)? I just want to check that self.yellowViewController = yellcon_New;
is going via my setter, so that the old objects gets released and the new one retained.
// INTERFACE
@property(nonatomic, retain) YellowViewController *yellowViewController;
// IMPLEMENTATION (A)
self.yellowViewController = yellcon_New;
// IMPLEMENTATION (B)
[self setYellowViewController:yellcon_New];
All of this is correct :
self.yellowViewController = yellcon_New;
And
[self setYellowViewController:yellcon_New];
Work the same. I would like to add something interesting : when you use
yellowViewController = yellcon_New;
you associate directly the value to the ivar, without going through your setter methode.
So if you have
-(void)setYellowViewController:(YellowViewController*)theYellowViewController;
{
NSLog(@"Setting the yellow view controller");
[yourWife askFor:beer];
...whatever...
...set the yellowViewController (retain in your case)
}
Calling
self.yellowViewController = yellcon_New;
and
[self setYellowViewController:yellcon_New];
will use the setter method (and log the message, and make your wife bring you some beer)
but
yellowViewController = yellcon_New;
will not.
It's interesting to know this in some cases.
Yes, A and B lines work the same
You can check that by using @dynamic instead of @synthesize for this property and put NSLog message in you implementation of setter method.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With