鉴于下面的属性声明,方法 (A) 的工作方式是否与方法 (B) 完全相同?我只想检查 self.yellowViewController = yellcon_New;
是否正在通过我的 setter,以便释放旧对象并保留新对象。
// INTERFACE
@property(nonatomic, retain) YellowViewController *yellowViewController;
// IMPLEMENTATION (A)
self.yellowViewController = yellcon_New;
// IMPLEMENTATION (B)
[self setYellowViewController:yellcon_New];
最佳答案
所有这些都是正确的:
self.yellowViewController = yellcon_New;
和
[self setYellowViewController:yellcon_New];
同样的工作。 我想补充一些有趣的东西:当你使用
yellowViewController = yellcon_New;
您直接将值与 ivar 相关联,而无需通过您的 setter 方法。
如果你有
-(void)setYellowViewController:(YellowViewController*)theYellowViewController;
{
NSLog(@"Setting the yellow view controller");
[yourWife askFor:beer];
...whatever...
...set the yellowViewController (retain in your case)
}
打电话
self.yellowViewController = yellcon_New;
和
[self setYellowViewController:yellcon_New];
将使用 setter 方法(并记录消息,并让你的妻子给你拿些啤酒)
但是
yellowViewController = yellcon_New;
不会。
在某些情况下了解这一点很有趣。
关于objective-c - 使用点语法或括号语法设置属性之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2207810/