2

NSArray のように使用できるように、コレクション (NSArray サブクラスではない) を返す「XXXList」という名前のオブジェクトを実装したいと考えています。

XXXList *list = [XXXList list];

for(id object in list)
{
    ......
}
4

2 に答える 2

3

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 の投稿もあります。

于 2013-05-30T10:03:34.023 に答える
2

独自のクラスを使用する場合は、NSFastEnumerationを実装する必要があります。

于 2013-05-30T10:03:36.070 に答える