我有一个关于使用 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/