Cocoa 分子什么时候完成?

Cocoa 分子什么时候完成?,cocoa,nsenumerator,Cocoa,Nsenumerator,我们如何知道枚举何时完成?文档上写着:返回值 nextObject 枚举所有对象后,为nil。我希望实现一些“委托式”行为,从而 if (nextObject == nil) { do something because we're done! } 但我看不出有这样的东西: enumerationDidFinish: 在下一块中,我可以在哪里检查枚举器是否完整 NSArray *anArray = // ... ; NSEnumerator *enumerator = [anAr

我们如何知道枚举何时完成?文档上写着:返回值

nextObject
枚举所有对象后,为nil。我希望实现一些“委托式”行为,从而

if (nextObject == nil) { 
    do something because we're done!
}
但我看不出有这样的东西:

enumerationDidFinish:
在下一块中,我可以在哪里检查枚举器是否完整

NSArray *anArray = // ... ;
NSEnumerator *enumerator = [anArray objectEnumerator];
id object;

while ((object = [enumerator nextObject])) {
    // do something with object...
}

while
循环完成时,您知道枚举已完成。然后可以调用委托方法。

只需将代码放在整个
之后,同时执行


然后,当枚举完成时,它将执行,您将知道它已到达终点。

当从
nextObject
返回的值为
nil
while()循环后立即执行该枚举器如何。当nextObject返回nil时,枚举完成,循环条件失败,循环结束后立即继续执行
身体

因为如果返回的“object”为nil,while循环将不会在主体中继续执行,它将中断到循环的末尾,将您想要对对象执行的任何操作都放在那里将是一个好主意。

是的。。。只是我忘记了一件基本的事情。这就是当您不停地使用cocoa调用而忘记了循环的基本原理时所发生的情况!更具体地说,Edward是对的-当将-nextObject分配给
对象时,while循环正在计算,本质上是“当有下一个对象时,执行以下操作:”。