我在这个网站上找到了这样的代码:
- (NSArray *) valueForKey:(id)key {
NSMutableArray *retval = [NSMutableArray array];
for (NSObject *object in self) {
[retval addObject:[object valueForKey:key]];
}
return self;
}
很抱歉新手问题,但我无法弄清楚那里的快速枚举是什么,因为自我只是一个对象,而不是一个集合。
答案 0 :(得分:4)
任何符合NSFastEnumeration protocol的类都可以使用in
语法进行枚举。您发布的代码片段暗示该类还实现了协议定义的-countByEnumeratingWithState:objects:count:
方法,并且该方法返回一个NSObject实例数组以进行迭代。
答案 1 :(得分:2)
它是for ( ... in ... )
循环。
NSMutableArray
必须符合NSFastEnumeration
协议。
答案 2 :(得分:0)
如果您的示例有效,则表示self
是实现NSFastEnumeration
的类的实例。这是需要采用的协议,以便快速枚举。
例如,您可以创建自己的自定义对象并实现该协议。然后在那个班级里你可以打电话给
for (id obj in self) {
这将导致在您的类上调用以下方法,该方法在NSFastEnumeration
协议中定义
countByEnumeratingWithState:objects:count: