如何实现NSArray之类的自定义对象

时间:2013-05-30 09:57:16

标签: objective-c nsarray

我想实现一个名为“XXXList”的对象,它将返回一个集合(而不是NSArray子类),这样我就可以像NSArray一样使用它了:

XXXList *list = [XXXList list];

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

2 个答案:

答案 0 :(得分:3)

你可以用NSArray做几件事,我会列出我认为你可能会追求的两件事:

首先,您可以使用for…in循环(NSFastEnumeration)进行迭代,其次可以使用索引下标符号(类似list[2])。幸运的是,这两个对象也可用于其他类型的对象,您只需要实现它们。

实施NSFastEnumeration并非如此微不足道,我建议您阅读Mike Ash’s NSBlog post

另一方面,实现下标符号非常简单,只需要实现两种方法。

有吸气剂:

 - (id)objectAtIndexedSubscript: (NSUInteger)index;

和二传手

 - (void)setObject: (id)obj atIndexedSubscript: (NSUInteger)index;

也有NSBlog post on that

答案 1 :(得分:2)

如果您想使用自己的课程,则需要实施NSFastEnumeration