2011-01-20 21 views
0

エラーの内容を教えてください。最初の呼び出しで無限回実行するループ

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

、[リストのカウントは]あなたがループ内であなたのループ変数rをインクリメントしているので、それがゼロにデクリメントことはできません2.

答えて

4

です。

あなたは、この行を変更する必要があります:

 [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)ループを実行し、まったく同じことが起こります。

次のインデックス(r + 1)にtempを挿入したいのですが、配列に2つの場所しかないのでクラッシュする可能性があります。配列のサイズを大きくする(この場合はr + 1に項目を挿入する)ためにaddObject:を行う必要があります。