2011-01-20 3 views

ответ

4

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

Вы должны изменить эту строку:

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

, чтобы возможно:

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

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

+0

Да, извините. Я понял, что как только я отправил. – Label

1

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

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

Смежные вопросы