次のように、他の言語で作業したことから、ループ外で再利用された変数を宣言する習慣を身につけました。
NSString *lcword;
for( NSString *word in tokens )
{
lcword = [ word lowercaseString ];
...
}
Objective-Cでもこれを行うのは合理的ですか、それともコンパイラはそれを不要にするのに十分賢いですか?
次のように、他の言語で作業したことから、ループ外で再利用された変数を宣言する習慣を身につけました。
NSString *lcword;
for( NSString *word in tokens )
{
lcword = [ word lowercaseString ];
...
}
Objective-Cでもこれを行うのは合理的ですか、それともコンパイラはそれを不要にするのに十分賢いですか?
私が知っているObjective-Cには何のメリットもありません。最新のObjective-Cコンパイラはすべて、関数またはメソッドの先頭でローカル変数にスタックスペースを割り当てます。変数をループにスコープすると、ループの外で名前を使用できなくなり、コンパイラが必要に応じてスタックスペースを再利用できなくなります。
参照:ループ内で変数を宣言するためのオーバーヘッドはありますか?(C ++)(これは別の言語に関するものなので、重複としてマークすることはしませんが、動作中のコンパイラー手法は非常に似ています)
変数を再利用できる場合は、再利用してください。必要がない場合は、反復ごとに新しいものを宣言する必要はありません。