1
我有一个id<NSFastEnumeration>
对象。我想计算对象内的元素。这怎么能实现?内部计数元素id <NSFastEnumeration>
的唯一方法NSFastEnumeration工具是:
- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len
这个方法返回我要找的计数,但我并不想真正枚举我不知道的对象,有什么我可以安全地传递作为参数。是否可以通过零,零,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];
代替。
谢谢你的回答。我知道容量只是一个暗示,但后来我好奇,想知道。我将坚持'NSMutableArray * results = [NSMutableArray array];'然后。 – tonklon 2010-08-04 09:09:40
*当然这意味着枚举器将被耗尽,并且不能再循环。*是否?我无法在文档中的任何地方找到它是真实的。 – JeremyP 2010-08-04 12:49:23
@Jeremy:看看采用NSFastEnumeration的NSEnumerator。 – kennytm 2010-08-04 13:25:31