Objective c 如何实现像NSArray这样的自定义对象
我想实现一个名为“XXXList”的对象,它将返回一个集合(而不是NSArray子类),这样我就可以像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 *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包装类。)我认为你提出了一个有效的问题。你为什么不试着开一家新的呢?