首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >id<NSFastEnumeration>中的count元素

id<NSFastEnumeration>中的count元素
EN

Stack Overflow用户
提问于 2010-08-04 16:14:27
回答 1查看 1.3K关注 0票数 1

我有一个id<NSFastEnumeration>对象。我想对对象内部的元素进行计数。如何才能做到这一点?

NSFastEnumeration实现的唯一方法是:

代码语言:javascript
复制
- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len

此方法返回我正在查找的计数,但由于我不想真正枚举对象,所以我想知道我可以安全地作为参数传递什么。只传递nil,nil,0可以吗?如果不是,我应该通过什么?

背景:

我想创建一个函数返回值的NSArray,我想用给定集合中的每个元素调用它。我想要一个用函数枚举集合的结果数组。

代码语言:javascript
复制
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];来代替。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-04 16:27:08

从NSFastEnumeration获取长度的唯一方法是遍历它。

代码语言:javascript
复制
int count = 0;
for (id x in enumerator)
  ++ count;
return count;

当然,这意味着enumerator将耗尽,您不能再次循环它。

另外,容量只是一个提示。设置它几乎没有什么好处。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3403724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档