我在 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/