Objective c 如何实现像NSArray这样的自定义对象

Objective c 如何实现像NSArray这样的自定义对象,objective-c,nsarray,Objective C,Nsarray,我想实现一个名为“XXXList”的对象,它将返回一个集合(而不是NSArray子类),这样我就可以像NSArray一样使用它: XXXList *list = [XXXList list]; for(id object in list) { ...... } 您可以使用NSArrays做几件事,我将列出我认为可能是您所追求的两件事: 首先,您可以在循环()中使用for…进行迭代,其次,您可以使用索引下标表示法(类似于列表[2])。幸运的是,这两种方法也适用于其他类型的对象,您只需要

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

XXXList *list = [XXXList list];

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

您可以使用
NSArray
s做几件事,我将列出我认为可能是您所追求的两件事:

首先,您可以在循环()中使用
for…进行迭代,其次,您可以使用索引下标表示法(类似于
列表[2]
)。幸运的是,这两种方法也适用于其他类型的对象,您只需要实现它们

实现NSFastEnumeration并不是那么简单,我建议您仔细阅读

另一方面,实现下标表示法非常简单,只需要实现两种方法

这里有一个getter:

 - (id)objectAtIndexedSubscript: (NSUInteger)index;
二传手呢

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

还有一个问题。

如果你想使用自己的类,你需要实现。

OP说:“没有nsarray及其子类”@AnoopVaidya我知道,这就是为什么我列出了两种方法让对象开始像nsarray一样工作,即使它们不是。@AnoopVaidya,对象不需要是可枚举的数组。将
XXXList
存储值的位置?如果不是数组,那怎么办?@anopvaidya,显然是一个实现NSFastEnumeration协议的对象…@ikinciviking:我同意。但是我想知道如何创建一组不是数组/集合/字典的对象。如何
添加:
删除:
等等@AnoopVaidya:在这个问题的上下文中,这是不相关的。@AnoopVaidya(简短回答:你可以用纯C结构构建一个数据结构(数组或链表),然后围绕它创建一个objective-C包装类。)我认为你提出了一个有效的问题。你为什么不试着开一家新的呢?