我想实现一个名为“XXXList”的对象,它将返回一个集合(不是 NSArray 子类),这样我就可以像 NSArray 一样使用它:
XXXList *list = [XXXList list];
for(id object in list)
{
......
}
我想实现一个名为“XXXList”的对象,它将返回一个集合(不是 NSArray 子类),这样我就可以像 NSArray 一样使用它:
XXXList *list = [XXXList list];
for(id object in list)
{
......
}
你可以用NSArray
s 做几件事,我将列出我认为可能是你所追求的两个:
首先,您可以使用for…in
循环(NSFastEnumeration)进行迭代,其次您可以使用索引下标表示法(类似于list[2]
)。幸运的是,这两种方法也可用于其他类型的对象,您只需要实现它们即可。
实现 NSFastEnumeration 并不是那么简单,我建议阅读Mike Ash 的 NSBlog 帖子。
另一方面,实现下标符号非常简单,您只需要实现两种方法。
有吸气剂:
- (id)objectAtIndexedSubscript: (NSUInteger)index;
和二传手
- (void)setObject: (id)obj atIndexedSubscript: (NSUInteger)index;
也有一个NSBlog 帖子。
如果要使用自己的类,则需要实现NSFastEnumeration 。