次の 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 がプロパティ ゲッターへの繰り返しアクセスを最適化できるかどうかです。プロパティが非アトミックである場合、違いはありますか?
推測する必要がある場合は、以下のコードを記述した方が高速であると言えます。これは、これらの行で self.aProperty が変更されないという保証がコンパイラにないためです。私は正しいですか?