停止枚举NSDictionary中的块。

14

如果我正在执行以下操作,如何停止枚举?我认为文档说要设置stop = TRUE。但是当我在块内这样做时,它会显示不可取消分配的错误。

 [self.visibleViewControllers_ enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {

            if (CGRectIntersectsRect(visibleRect, viewRect)) {
               //break here
            }
        }];

1
stop是一个指针。你不会将stop设置为true,因为它是一个指针。你需要写成*stop = YES。 - gnasher729
2个回答

26

*stop设置为YES

[self.visibleViewControllers_ enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {

            if (CGRectIntersectsRect(visibleRect, viewRect)) {
               *stop =YES;
               return;
            }
        }];

3
如果你的代码块后面还有其他内容,那么在设置*stop = YES之后,你可能也希望立即添加一个return语句。 - rob mayoff

2

对于SWIFT 2:

Dict.enumerateKeysAndObjectsUsingBlock { (key, value, stop) -> Void in

            if(//Something){
                 //Do Something
            }
            else {
                //To Stop
                stop.memory = true
            }
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接