何时避免在Objective C中使用访问器方法

时间:2013-09-16 10:01:51

标签: objective-c

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

_myProp = newValue;

据我了解,创建属性myProp将创建实际变量_myProp,以及两个访问器方法(默认情况下)myProp(getter)和{ {1}}(设定者)。

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

2 个答案:

答案 0 :(得分:1)

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

另一方面,如果有财产声明,除了执行访问者外,没有理由直接访问ivar。

有时人们想要绕过访问者的副作用并直接使用ivar。但这通常是建筑缺陷的标志。

答案 1 :(得分:1)

我有两次直接使用ivar。

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

  2. 在类的init方法中。