Objective c 正在通过“访问”访问属性;“自我”;是否比直接访问ivar慢?

Objective c 正在通过“访问”访问属性;“自我”;是否比直接访问ivar慢?,objective-c,properties,instance-variables,Objective C,Properties,Instance Variables,例如,如果我有一个属性索引和一个ivar\u索引,那么使用self.index、[self-index]和[self-setIndex://self-setIndex:?使用访问器会带来开销,至少是一个方法调用 也就是说,猜测和证明是不同的事情。开销可能很大,也可能不是。在任何情况下,分析应用程序都会显示CPU时间花在哪里以及应该优化什么。我严重怀疑在直接IVAR上使用访问器会影响任何应用程序,因为应该避免使用访问器 原子属性和复制属性将慢得多,这些选择将产生更大的影响,应该更加仔细地考虑。在适

例如,如果我有一个属性
索引
和一个ivar
\u索引
,那么使用
self.index
[self-index]
[self-setIndex://self-setIndex:

使用访问器会带来开销,至少是一个方法调用

也就是说,猜测和证明是不同的事情。开销可能很大,也可能不是。在任何情况下,分析应用程序都会显示CPU时间花在哪里以及应该优化什么。我严重怀疑在直接IVAR上使用访问器会影响任何应用程序,因为应该避免使用访问器

原子属性和复制属性将慢得多,这些选择将产生更大的影响,应该更加仔细地考虑。在适当的时候使用它们

但答案在于分析你的应用程序

编辑:

访问器有很多好处:封装、客户端、派生类和类本身之间的代码一致性、重写、在需要时调试属性访问、只读访问检查。。。有很多很好的理由来支付一个小的性能价格。所有好的理由并不总是足够好的


如果访问者成为一个问题,我会说Objective-C类可能不是合适的工作选择。C++类有更多的机会可以快速:非虚拟方法、内联方法、基于堆栈的实例……/P> + 1用于分析。与(比如)最细微的绘画相比,这种差异可能是微不足道的。是的,有几个数量级。不要忽视正在发生的事情的基本速度。除非你处于一个紧密的循环中,否则任何差异都可能是微不足道的。