许多类都有类似于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;
}
}
}