gpt4 book ai didi

objective-c - 使用点语法或括号语法设置属性之间有区别吗?

转载 作者:太空狗 更新时间:2023-10-30 03:59:16 36 4
gpt4 key购买 nike

鉴于下面的属性声明,方法 (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/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com