CLIST はおそらく循環していますか? したがって、GetHeadPosition
?
いずれにせよ、NSArray
(または、NSMutableArray
この場合は、挿入したいので)は、Objective-C で順序付きリストを保持する通常の方法です。
にはRemoveAt
、 を使用しますremoveObjectAtIndex:
。にはGetAt
、 を使用しますobjectAtIndex:
。InsertBefore
あなたはおそらく次のようなものを書きたいと思うでしょう:
- (void)insert:(id)objectToInsert before:(id)referenceObject
{
int index = [array indexOfObject:referenceObject];
if(index == NSNotFound) return; // or whatever you'd expect.
// Maybe object is just inserted at the end?
index = index - 1;
if(index < 0) index = [array count];
[array insertObject:objectToInsert atIndex:index];
}
(これはおそらく NSArray カテゴリの方がうまくいくでしょうが、要点はわかります)
おそらく、配列の位置を別の変数に保持GetNext
しGetHeadPosition
たいでしょう。GetNext の場合:
arrayPosition = (arrayPosition + 1)%[array count];
return [array objectAtIndex:arrayPosition];
GetHeadPosition の場合は、次のようにします。
return arrayPosition;
編集: NSArray を反復処理する場合、最も簡単な方法は、実際には明示的なものを無視して使用することです。
for(ObjectType *object in array)
{
/* do something with object */
}
これは通常、GetNext の類似物は実際には必要ないことを意味しますが、そのループ内で配列を変更することはできないため、常に使用できるとは限りません。