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

时间:2012-06-13 16:50:46

标签: objective-c xcode optimization loops

我已经习惯在其他语言中使用其他语言来声明循环之外的重用变量:

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

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

2 个答案:

答案 0 :(得分:9)

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

另请参阅:Is there any overhead to declaring a variable within a loop? (C++)(这是一种不同的语言,因此我不会将其标记为欺骗,但编译器技术非常相似)

答案 1 :(得分:0)

如果您可以重复使用变量,那么就这样做。如果不需要,则无需每次迭代都声明一个新的。