【问题标题】:Loop executing infinite times循环执行无限次
【发布时间】:2011-01-20 08:54:29
【问题描述】:
你能告诉我错误可能是什么吗?
for (int r=[list count]-1; r>=0;r--) {
NSMutableArray *temp;
temp=[list objectAtIndex:r];
[list insertObject:temp atIndex:r++];
}
第一次调用时,[list count] 为 2。
【问题讨论】:
标签:
objective-c
for-loop
infinite-loop
【解决方案1】:
你在循环内增加你的循环变量r,所以它永远不会减少到零。
你需要改变这一行:
[list insertObject:temp atIndex:r++];
也许:
[list insertObject:temp atIndex:r + 1];
【解决方案2】:
您有一个无限循环,因为循环开始通过测试 (r == 1 && 1 >= 0) 并且从那时起,r 永远不会改变。您只需在 r (1) 处抓取对象并将其插入到 r (1) 处,然后递增 r (r == 2)。最后,循环结束,r 递减(r == 1),然后您再次运行测试(1 >= 0),因此它运行循环并发生完全相同的事情。
您可能希望在下一个索引 (r + 1) 处插入 temp ,但这会导致崩溃,因为您的数组只有 2 个位置。您需要做一个 addObject: 以增加数组的大小(并在这种情况下在 r + 1 处插入项目)。
【解决方案3】:
保罗是对的。也许你认为r++ 是r+1 的简写?不是,是r=r+1。