我有一个id<NSFastEnumeration>对象。我想对对象内部的元素进行计数。如何才能做到这一点?
NSFastEnumeration实现的唯一方法是:
- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len此方法返回我正在查找的计数,但由于我不想真正枚举对象,所以我想知道我可以安全地作为参数传递什么。只传递nil,nil,0可以吗?如果不是,我应该通过什么?
背景:
我想创建一个函数返回值的NSArray,我想用给定集合中的每个元素调用它。我想要一个用函数枚举集合的结果数组。
id<NSFastEnumeration> enumeratable = someObject;
NSMutableArray* results = [NSMutableArray arrayWithCapacity:(#Fill in count here#)];
for (id object in enumeratable) {
[results addObject:callFunctionOnObject(object)];
}正如您所看到的,我只需要使用计数来优化数组初始化。我非常清楚我可以使用NSMutableArray* results = [NSMutableArray array];来代替。
发布于 2010-08-04 16:27:08
从NSFastEnumeration获取长度的唯一方法是遍历它。
int count = 0;
for (id x in enumerator)
++ count;
return count;当然,这意味着enumerator将耗尽,您不能再次循环它。
另外,容量只是一个提示。设置它几乎没有什么好处。
https://stackoverflow.com/questions/3403724
复制相似问题