Iphone 快速计数不理解
我在这个网站上发现了这样的代码:Iphone 快速计数不理解,iphone,objective-c,ios,xcode,Iphone,Objective C,Ios,Xcode,我在这个网站上发现了这样的代码: - (NSArray *) valueForKey:(id)key { NSMutableArray *retval = [NSMutableArray array]; for (NSObject *object in self) { [retval addObject:[object valueForKey:key]]; } return self; } 很抱歉,我问了一个新手问题,但我不知道这里的快速枚举是什么,因为self只
- (NSArray *) valueForKey:(id)key {
NSMutableArray *retval = [NSMutableArray array];
for (NSObject *object in self) {
[retval addObject:[object valueForKey:key]];
}
return self;
}
很抱歉,我问了一个新手问题,但我不知道这里的快速枚举是什么,因为self只是一个对象,而不是一个集合。它是(…in…循环的
NSMutableArray
必须符合NSFastEnumeration
协议
请参阅:它是(…in…)的
循环
NSMutableArray
必须符合NSFastEnumeration
协议
请参阅:任何符合的类都可以用
语法中的枚举。您发布的代码片段意味着该类还实现了协议定义的-countByEnumeratingWithState:objects:count:
方法,并且该方法返回要迭代的NSObject实例数组。任何符合的类都可以用的语法枚举。您发布的代码片段意味着该类还实现了协议定义的-countByEnumeratingWithState:objects:count:
方法,该方法返回一个NSObject实例数组以进行迭代。如果示例有效,则意味着self
是实现NSFastEnumeration
的类的实例。这是需要采用的协议,以允许快速枚举
例如,您可以创建自己的自定义对象并实现该协议。然后在这个类中,你可以调用
for (id obj in self) {
这将导致对类调用以下方法,该方法在NSFastEnumeration
协议中定义
countByEnumeratingWithState:objects:count:
如果您的示例有效,则意味着self
是实现NSFastEnumeration
的类的实例。这是需要采用的协议,以允许快速枚举
例如,您可以创建自己的自定义对象并实现该协议。然后在这个类中,你可以调用
for (id obj in self) {
这将导致对类调用以下方法,该方法在NSFastEnumeration
协议中定义
countByEnumeratingWithState:objects:count:
对于(输入字典)我理解枚举字典时发生的事情,但是当我们枚举self时发生的事情是什么?@user801255-看起来字典也支持它。对于(输入字典)我理解枚举字典时发生的事情,但是当我们列举self时发生了什么?@user801255-字典似乎也支持它。这似乎没有什么用处。例如,它构建一个retval
数组,然后甚至不返回它,而是返回self
。仅供参考,此代码似乎来自。这似乎没有任何用处。例如,它构建了一个retval
数组,然后甚至不返回它,而是返回self
。