gpt4 book ai didi

objective-c - iOS 在使用实例变量或 getter 方法时

转载 作者:可可西里 更新时间:2023-11-01 03:44:40 26 4
gpt4 key购买 nike

我有一个关于使用 getter 和实例变量的问题。让我们看一个例子。

假设我有一个 .h 文件:

@property (nonatomic,strong) NSString *name

在 .m 文件中,我以这种方式合成该变量:

@synthesize name = _name;

现在我的问题是:使用有什么区别:

[self.name aMethod]

[_name aMethod]

谢谢!

最佳答案

第一个通过 getter 方法访问 ivar。第二个直接访问 ivar。由于它是一个简单的综合属性,因此除了第一个进行额外的方法调用外没有太大区别。但是,如果属性是原子的、动态的,或者 getter 方法很复杂,那么就会有所不同,第一个实际上是原子的,而第二个不是,而第一个实际上会触发任何复杂的逻辑getter 而第二个不会。

用最简单的话来说,编译器将第一个调用重写为:

[[self name] aMethod]

而第二个调用则保持原样。

关于objective-c - iOS 在使用实例变量或 getter 方法时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9153164/

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