Use sort descriptors instead of compare: as much more flexible.
Use sort descriptors instead of compare: as much more flexible.
Hand in a mutable array, rather than creating a mutable copy.
Enumerate sorted objects by passing in a block.
Enumerate sorted objects by passing in a block.
Reorder header to prioritize enumeration over mutability.
Reorder header to prioritize enumeration over mutability.
Don't sort the backing array - less efficient but more reusable to avoid sorting.

Caching could be introduced to reduce the amount of sorting required, but would need to know when the backing array changes.
Efficiency would be improved by using KVO to detect changes to the backing array (issue here as NSArray does not support KVO - wrapper would be required) and sorting as required.
Mutability could then be removed from CBDSortedArray, clients could simply change the backing array - though obviously some changes would have no effect, such as reordering.