NSArray のように使用できるように、コレクション (NSArray サブクラスではない) を返す「XXXList」という名前のオブジェクトを実装したいと考えています。
XXXList *list = [XXXList list];
for(id object in list)
{
......
}
NSArray のように使用できるように、コレクション (NSArray サブクラスではない) を返す「XXXList」という名前のオブジェクトを実装したいと考えています。
XXXList *list = [XXXList list];
for(id object in list)
{
......
}
sを使用してできることはいくつかありNSArray
ます。そのうちの 2 つを挙げます。
まず、for…in
ループ ( NSFastEnumeration ) で反復できます。次に、インデックス付き添字表記 ( のようなものlist[2]
) を使用できます。幸いなことに、これらは両方とも他のタイプのオブジェクトでも利用できるため、実装する必要があります。
NSFastEnumeration の実装はそれほど簡単ではありません。Mike Ash の NSBlog の投稿を読むことをお勧めします。
一方、添字表記の実装は非常に簡単です。実装する必要があるメソッドは 2 つだけです。
ゲッターがあります:
- (id)objectAtIndexedSubscript: (NSUInteger)index;
そしてセッター
- (void)setObject: (id)obj atIndexedSubscript: (NSUInteger)index;
それに関するNSBlog の投稿もあります。
独自のクラスを使用する場合は、NSFastEnumerationを実装する必要があります。