There is a method (objectsAtIndexes) for returning specified indexes from an original array, but it requires an NSIndexSet as its argument, and there isn't a built-in way to convert your array of indices to an index set. On the plus side, you can generate the index set with a short loop, as follows:
NSMutableIndexSet indexes = [NSMutableIndexSet indexSet];
for (NSNumber * number in indexArray)
{
[indexes addIndex:[number intValue]];
}
return [originalArray objectsAtIndexes:indexes];
Is this any more efficient than simply looping through the original array? I have no idea. You would have to profile your app to be sure.