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

标签 objective-c ios properties accessor

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

相关文章:

iphone - 以用户友好的方式预加载数据

ios - 未加载所需的 ViewController 和 View iOS 开发

python - 如何在 Python 中枚举对象的属性?

.net - 什么是 VB.NET 等同于这种创建实例的方式?

objective-c - 处理自定义组件 : subclass UIView or UIViewController?

objective-c - WebView (webkit) "Look Up In Dictionary"UI 错误 - Mac App

objective-c - Objective C类之间的通信

ios - 仅允许一个 Controller 旋转

visual-studio-2010 - Visual Studio 属性表保存在哪里?

ios - 防止 iOS QuickLook 生成缓存