【问题标题】: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

        【讨论】:

        • 是的,对不起。我一发布就意识到了这一点。
        猜你喜欢
        • 2016-04-09
        • 1970-01-01
        • 1970-01-01
        • 2012-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-08
        相关资源
        最近更新 更多