Implement stopping support for CPArray enumerateObjectsUsingBlock:.

This commit is contained in:
Alexander Ljungberg
2012-03-23 00:34:09 +00:00
parent e19a782954
commit 3a0068186a
2 changed files with 25 additions and 3 deletions
+11 -3
View File
@@ -536,13 +536,21 @@ var concat = Array.prototype.concat,
objj_msgSend([self objectAtIndex:index], aSelector);
}
- (void)enumerateObjectsUsingBlock:(Function)aFunction
- (void)enumerateObjectsUsingBlock:(Function /*(id anObject, int idx, @ref BOOL stop)*/)aFunction
{
// This could have been [self enumerateObjectsWithOptions:CPEnumerationNormal usingBlock:aFunction]
// but this method should be as fast as possible.
var index = 0,
count = [self count];
count = [self count],
shouldStop = NO,
shouldStopRef = AT_REF(shouldStop);
for (; index < count; ++index)
aFunction([self objectAtIndex:index], index);
{
aFunction([self objectAtIndex:index], index, shouldStopRef);
if (shouldStop)
return;
}
}
- (void)enumerateObjectsWithOptions:(CPEnumerationOptions)options usingBlock:(Function /*(id anObject, int idx, @ref BOOL stop)*/)aFunction