Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 快速计数不理解_Iphone_Objective C_Ios_Xcode - Fatal编程技术网

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