Suppose I have an immutable NSArray and want to create several sub-arrays. I could invoke subarrayWithRange on the original array and get a new NSArray. Does the new copy share memory region with the old copy?
In the worst case I may end up creating a sub-array for each element of the original array (starting with that element and ending at the end of the original array), so this makes a difference between a linear and a square memory use pattern.