5

次のように、他の言語で作業したことから、ループ外で再利用された変数を宣言する習慣を身につけました。

NSString *lcword;
for( NSString *word in tokens )
{
    lcword = [ word lowercaseString ];
    ...    
}

Objective-Cでもこれを行うのは合理的ですか、それともコンパイラはそれを不要にするのに十分賢いですか?

4

2 に答える 2

9

私が知っているObjective-Cには何のメリットもありません。最新のObjective-Cコンパイラはすべて、関数またはメソッドの先頭でローカル変数にスタックスペースを割り当てます。変数をループにスコープすると、ループの外で名前を使用できなくなり、コンパイラが必要に応じてスタックスペースを再利用できなくなります。

参照:ループ内で変数を宣言するためのオーバーヘッドはありますか?(C ++)(これは別の言語に関するものなので、重複としてマークすることはしませんが、動作中のコンパイラー手法は非常に似ています)

于 2012-06-13T17:07:34.580 に答える
0

変数を再利用できる場合は、再利用してください。必要がない場合は、反復ごとに新しいものを宣言する必要はありません。

于 2012-06-13T16:53:30.217 に答える