2

我在示例 Objective C 代码中不断看到这样的事情:

_myProp = newValue;

据我了解,创建属性myProp将创建实际变量 as_myProp和两个访问器方法(默认情况下)myProp(getter)和setMyProp(setter)。

我的问题是,为什么我一直看到绕过访问器方法并直接获取变量的示例代码?这有什么好处吗?

4

2 回答 2

1

在某些情况下,您不想声明属性,而只是使用私有 ivar。

另一方面,如果存在属性声明,则没有理由直接访问 ivar,除非在访问器的实现中。

有时人们想绕过访问器的副作用,直接使用 ivar。不过,这通常是架构缺陷的标志。

于 2013-09-16T10:05:16.760 回答
1

有两次我直接使用 ivar。

  1. 覆盖 getter 或 setter 时。如果你在 getter 或 setter 中使用 self.blah 属性,它会创建一个无限循环。

  2. 在类的 init 方法中。

于 2013-09-16T10:05:45.790 回答