As an example, instead of writing this:
NSArray *someArray = @[@"1", @"2", @"3", @"4"];
[someArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSString *aString = obj;
// do something
}];
You can down-cast the object directly if you know the constants in the block method to make it more consice:
[someArray enumerateObjectsUsingBlock:^(NSString *aString, NSUInteger idx, BOOL *stop) {
// do something
}];
Does this go against any best practices or oop principles?