Objective c 在目标C中何时避免使用访问器方法
我一直在C代码示例中看到类似的情况:Objective c 在目标C中何时避免使用访问器方法,objective-c,Objective C,我一直在C代码示例中看到类似的情况: _myProp = newValue; 据我所知,创建属性myProp将创建实际变量\u myProp,以及两种访问器方法(默认情况下)myProp(getter)和setMyProp(setter) 我的问题是,为什么我总是看到通过访问器方法直接获取变量的示例代码?这样做有什么好处吗?有时您不想声明属性,而只想使用私有ivar 另一方面,如果存在属性声明,则除了在访问器的实现中,没有理由直接访问ivar 有时人们想绕过存取器的副作用,直接使用ivar。不
_myProp = newValue;
据我所知,创建属性myProp
将创建实际变量\u myProp
,以及两种访问器方法(默认情况下)myProp
(getter)和setMyProp
(setter)
我的问题是,为什么我总是看到通过访问器方法直接获取变量的示例代码?这样做有什么好处吗?有时您不想声明属性,而只想使用私有ivar 另一方面,如果存在属性声明,则除了在访问器的实现中,没有理由直接访问ivar
有时人们想绕过存取器的副作用,直接使用ivar。不过,这通常是架构缺陷的标志。我有两次直接使用ivar
为什么要在init方法中直接访问IVAR?理论上,如果需要在那里做任何事情,也应该在
dealloc
中直接使用IVAR(ARC处理大部分基本内存管理).我以前读过一些东西,我记不清了,但这与getter和setter是完全实例化还是其他不确定因素有关。JimMiely.一些人认为调用来自构建/销毁的访问器是有问题的,因为覆盖访问器的子类可能还没有完全初始化,并且不期望早期调用。还需要仔细考虑KVO,尤其是在