Цикл выполнения бесконечных раз - PullRequest
0 голосов
/ 20 января 2011

Не могли бы вы сказать мне, в чем может быть ошибка?

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

При первом вызове [количество счетчиков] равно 2.

Ответы [ 3 ]

4 голосов
/ 20 января 2011

Вы увеличиваете переменную цикла r внутри цикла, поэтому она никогда не может уменьшаться до нуля.

Вам необходимо изменить эту строку:

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

до, возможно:

        [list insertObject:temp atIndex:r + 1];
1 голос
/ 20 января 2011

У вас есть бесконечный цикл, потому что цикл начинает проходить тест (r == 1 && 1> = 0), и с этой точки r никогда не меняется.Вы просто берете объект в r (1) и вставляете его в r (1), а затем увеличиваете r (r == 2).Наконец, цикл заканчивается, r уменьшается (r == 1), и вы снова запускаете тест (1> = 0), поэтому он запускает цикл, и происходит точно такая же вещь.

Возможно, вы захотите вставитьtemp при следующем индексе (r + 1), но это вызовет сбой, так как ваш массив имеет только 2 места.Вам нужно будет сделать addObject: чтобы увеличить размер массива (и в этом случае вставить элемент в r + 1).

0 голосов
/ 20 января 2011

Пол прав.Может быть, вы думаете, что r++ является сокращением для r+1?Это не так, это означает r=r+1.

...