Objective-C块枚举设计模式

时间:2014-03-02 19:57:11

标签: objective-c objective-c-blocks enumeration

许多类都有类似于NSArray的枚举函数:

- (void)enumerateObjectsUsingBlock:(void (^)(id obj, NSUInteger idx, BOOL *stop))block

在你自己的班级中实现这个的正确方法(设计模式)是什么?下面的代码是我如何做到的,但这可能不是正确的方法?为了论证,_contents是一个NSArray,但它可以是任何合适的数据结构。块枚举应该比快速枚举更快。这个片段看起来没什么特别的东西可以让它更快。

 - (void)enumerateInputData:(NSRange) range
                      block:(void(^)(NSData *data, NSUInteger index, BOOL *stop)) enumerationBlock
{
    BOOL stop = NO;
    for (NSUInteger index = range.location; index < NSMaxRange(range); index++)
    {
        //custom processing
        NSData *data = [_contents objectAtIndex:index];

        enumerationBlock(data, index,&stop);
        if (stop) {
            break;
        }
    }
}

0 个答案:

没有答案