5

我已经养成了在其他语言中工作后在循环外声明重用变量的习惯,如下所示:

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

在 Objective-C 中也这样做是否合理,或者编译器是否足够聪明以至于不需要它?

4

2 回答 2

9

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

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

于 2012-06-13T17:07:34.580 回答
0

如果你可以重用一个变量,那就去做吧。如果不需要,则无需在每次迭代时声明一个新的。

于 2012-06-13T16:53:30.217 回答