考虑这个 Objective-C 代码(启用 ARC):
[self.aProperty sendMessage];
if (self.aProperty)
{
[self doSomethingWithProperty:self.aProperty];
}
我想知道将代码重写为下面的片段是否会更快(在发布版本中):
MyPropertyClass* myProperty = self.aProperty;
[myProperty sendMessage];
if (myProperty)
{
[self doSomethingWithProperty:myProperty];
}
问题是 Apple LLVM Compiler 3.0 是否能够优化对属性 getter 的重复访问?如果属性是非原子的,有什么区别吗?
如果我不得不猜测,我会说编写下面的代码更快,因为编译器不能保证 self.aProperty 在这些行中不会改变。我对吗?