在Objective-C中声明循环外的变量是否有任何优化效果?

Hen*_*oke 5 optimization xcode loops objective-c

我已经习惯了在其他语言中使用其他语言来声明循环外的重用变量,就像这样:

NSString *lcword;
for( NSString *word in tokens )
{
    lcword = [ word lowercaseString ];
    ...    
}
Run Code Online (Sandbox Code Playgroud)

在Objective-C中执行此操作是否合理,或者编译器是否足够聪明以使其不必要?

Chu*_*uck 9

我知道Objective-C没有任何好处.AFAIK每个现代Objective-C编译器在函数或方法的开头为局部变量分配堆栈空间.将变量限定为循环只会阻止您在循环外使用该名称,并阻止编译器重用堆栈空间(如果需要).

另请参见:在循环中声明变量是否有任何开销?(C++)(这是一种不同的语言,所以我不会将它标记为欺骗,但编译技术在工作中非常相似)