ios - self 和下划线之间访问 objective-c 中的属性的区别?

标签 ios

我在 self 和 underscore 之间很困惑,无法访问 Objective c 中的属性,每当我们创建属性时,它的 getter-setter 会自动生成。所以我们可以使用 self.property 和 same as _property 访问相同的属性。在我看来,应该有一些我没有得到的区别。请举例说明。

最佳答案

underbar(下划线)版本是实际的实例变量,不应直接引用。您应该始终通过属性名称,这将确保兑现任何 getter/setter 操作。

因此,如果您编写 _property = 4,则您已经直接设置了变量。如果您编写 self.property = 4,您实际上是在调用方法 [self setProperty:4],这将通过 setter(它可能会做一些事情,例如例如,强制执行最大值为 3 的属性,或更新 UI 以反射(reflect)新值)。

编辑:尽管值得一提的是 setter (setProperty) 将在内部发出一个 _property = 4 以实际设置实例变量。

关于ios - self 和下划线之间访问 objective-c 中的属性的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30901605/

相关文章:

iphone - Core Data 的新手,在 persistentStoreCoordinator 中出错

ios - Facebook iOS SDK 不工作

jquery - Velocity JS 在 iPad 上挂起

ios - iOS6 中的手势识别器和自动布局,从中心开始缩放

ios - 我无法根据与谓词的关系从核心数据中获取实体

ios - 如何解决 No + [RCTConvert AIR MapCoordinate Array] 错误 : function found. 在 iOS 上 react native map

ios - sip header 联系私有(private)ip。可以吗?

iphone - ARC 或不ARC iphone iOS5

ios - 当键盘可见时,ScrollView 不会自动向上移动

ios - 使用所需的 init(nscoder) 时从代码设置物理体