我正在使用 Objective-C 属性来为我处理保留/释放实例变量。在我的类里面,我正在做这样的事情:
self.myProperty = somethingIWantToRetain
[self.myProperty doSomeAction]
[self.myProperty doSomethingElse]
对于那些我没有更改 myProperty 值的行,使用 [self myProperty]/self.myProperty 是否比简单地使用 myProperty 慢?例如,以下会更快吗?
self.myProperty = somethingIWantToRetain
[myProperty doSomeAction]
[myProperty doSomethingElse]
谢谢
最佳答案
几乎可以肯定它会慢一点,但这不太重要。
直接引用您的 ivar(使用裸 myProperty
)直接访问变量。引用您的属性 getter (具有等效的 self.myProperty
或 [self myProperty]
)必须调用一个方法,该方法通常会执行 retain
和 autorelease
在你的 ivar 上。
然而,Objective-C 中的方法分配非常非常快,并且保留/自动释放调用也非常便宜,特别是对于那些在自动释放池被清除时可能不会被销毁的对象。我会专注于可读性和一致的风格,只有当你清楚地知道你有性能瓶颈需要追逐时才担心这里的性能。
关于iphone - Objective-C 属性 - 使用 [self myProperty] 或 self.myProperty 是否比 myProperty 慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6701365/