for 循环中的表达式结果未使用警告

rus*_*ord 4 cocoa cocoa-touch objective-c

我在以下 for 循环中收到“未使用的表达式结果”警告。

   NSInteger i = 0;
   for ( i; i < tags.count; i ++) {

   }
Run Code Online (Sandbox Code Playgroud)

似乎我缺少有关 for 循环如何工作的一些基本知识,任何人都可以解释此警告的原因吗?

das*_*ght 5

由于您i在循环外声明,因此未使用i第一部分中的表达式for

for ( i /* <<== This one */ ; i < tags.count; i ++) {

}
Run Code Online (Sandbox Code Playgroud)

for循环的语法允许您删除其三个表达式隔间中的任何一个的内容。这应该可以解决问题:

for ( ; i < tags.count; i ++) {

}
Run Code Online (Sandbox Code Playgroud)

事实上,您可以删除所有三个,使循环无限:

for ( ; ; ) {
    ...
    if (some_condition) break;
    ...
}
Run Code Online (Sandbox Code Playgroud)

注意:通常,您应该将循环变量声明为循环头的一部分。唯一的例外是当您需要使用i循环外的最终值时。