Objective-cには、NSArrayや他のコレクションでうまく動作する 'for(a in b)構文を使用した組み込みリストiterantorがあります。リストを反復し、objective-cでリストを削除しますか?
for(int i = [array count]-1; i >=0; --i)
{
if(condition)
{
[array removeItemAtIndex : i];
}
}
またはインデックスを蓄積する:しかし、それはあなたが余分なインデックスを調整する必要はありませんので、あなたは逆の順序で配列を反復処理することができます
for(int i = 0, i < [array count]; i ++)
{
if(condition)
{
[array removeItemAtIndex : i];
i --;
}
}
私は思いますあなたの2番目の答えはそれを行うための "公式の"最も美しい方法でしょう。あなたの最初の答えは私の意見では良いですが。どちらもおそらく同じように動作します。 – Accatyyc
Ole Bergemanはコレクションを変更する際には、一般的には良いアイデアではないと言っていますので、一度に要素を削除するため、2つ目の方法は(直感的に)効率的になるかもしれません。コレクションを "高速に列挙"しても、 。 – Vladimir
最初の応答のforループには、セミコロンの代わりにコンマが付きます。大したことはありませんが、コードをコピーして見ました。ありがとう。 – Hahnemann