例如,如果我有一个属性index
和一个ivar _index
,那么使用self.index
,[self index]
和[self setIndex:]
的速度是否更慢?
答案 0 :(得分:3)
使用访问器至少会产生开销,方法调用。
那就是说,猜测和证据是不同的东西。开销可能很大,也可能不是。在任何情况下,分析应用程序将显示CPU时间花费的位置和应优化的内容。我严重怀疑使用访问器而不是直接的ivars会影响应用程序到点访问器应该避免。
原子和复制属性会慢得多,这些选择会产生更大的影响,应该更仔细地考虑。适当时使用它们。
但答案是分析您的应用。
编辑:
访问器有许多好处:封装,客户端之间的代码一致性,派生类和类本身,覆盖,在需要时调试属性访问,只读访问检查......支付小的性能价格的充分理由。所有好的理由都不够好。 ;)
如果访问者成为问题,我会说Objective-C类可能不适合这项工作。 C ++类有更多快速的机会:非虚方法,内联方法,基于堆栈的实例......