通过“自我”访问一个属性。比直接访问伊塔尔慢?

时间:2012-06-22 10:08:15

标签: objective-c properties instance-variables

例如,如果我有一个属性index和一个ivar _index,那么使用self.index[self index][self setIndex:]的速度是否更慢?

1 个答案:

答案 0 :(得分:3)

使用访问器至少会产生开销,方法调用。

那就是说,猜测和证据是不同的东西。开销可能很大,也可能不是。在任何情况下,分析应用程序将显示CPU时间花费的位置和应优化的内容。我严重怀疑使用访问器而不是直接的ivars会影响应用程序到点访问器应该避免。

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

但答案是分析您的应用。

编辑:

访问器有许多好处:封装,客户端之间的代码一致性,派生类和类本身,覆盖,在需要时调试属性访问,只读访问检查......支付小的性能价格的充分理由。所有好的理由都不够好。 ;)

如果访问者成为问题,我会说Objective-C类可能不适合这项工作。 C ++类有更多快速的机会:非虚方法,内联方法,基于堆栈的实例......