2011-01-20 77 views
0

请问您可以告诉我什么是错误?循环执行无限次

for (int r=[list count]-1; r>=0;r--) { 
      NSMutableArray *temp; 
      temp=[list objectAtIndex:r]; 
      [list insertObject:temp atIndex:r++]; 
     } 

在第一次通话,[单数]为2

回答

4

你递增循环内的循环变量r,所以它永远不能递减到零。

你需要改变这一行:

 [list insertObject:temp atIndex:r++]; 

或许:

 [list insertObject:temp atIndex:r + 1]; 
0

保罗的权利。也许你认为r++r+1的简写?这不是,这意味着r=r+1

+0

对不起。我意识到,只要我发布。 – Label 2011-01-20 09:03:39

1

由于循环开始通过测试(r == 1 & & 1> = 0)并且从该点起,r永不改变,所以您有无限循环。您只需在r(1)处抓住对象并将其插入r(1),然后递增r(r == 2)。最后,循环结束,r得到递减(r == 1),然后再次运行测试(1> = 0),所以它运行循环并发生完全相同的事情。

您可能想要在下一个索引(r + 1)处插入temp,但由于数组只有2个位置,所以会导致崩溃。你需要做一个addObject:为了增加数组的大小(并且在这种情况下在r + 1处插入项目)。