我在示例Objective C代码中继续看到这样的事情:
_myProp = newValue;
据我了解,创建属性myProp
将创建实际变量_myProp
,以及两个访问器方法(默认情况下)myProp
(getter)和{ {1}}(设定者)。
我的问题是,为什么我一直看到绕过访问器方法并直接获取变量的示例代码?这有什么好处吗?
答案 0 :(得分:1)
在某些情况下,您不希望声明属性,而只需使用私有ivar。
另一方面,如果有财产声明,除了执行访问者外,没有理由直接访问ivar。
有时人们想要绕过访问者的副作用并直接使用ivar。但这通常是建筑缺陷的标志。
答案 1 :(得分:1)
我有两次直接使用ivar。
覆盖getter或setter时。如果你在getter或setter中使用属性self.blah,它会创建一个无限循环。
在类的init方法中。