However, there are three things I really like about the block-based array enumeration:
1) You have the same speed as fast enumeration, but you get the index passed in as well (in case you need it).
2) It's very easy to enable it to run concurrently (if you're modifying a thread-safe object or adding stuff to some queue).
3) It's very easy to iterate it in reverse order.
2) and 3) are enabled by using a variant called `- (void)enumerateObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void (^)(id obj, BOOL *stop))block`, where for `NSEnumerationOptions` you can pass `NSEnumerationConcurrent` and `NSEnumerationReverse`.