Deep Copy and Shallow Copy

后端 未结 4 1169
半阙折子戏
半阙折子戏 2020-12-07 23:36

I have read the answer for difference between deep copy and shallow copy from the post, What is the difference between a deep copy and a shallow copy? . Now I got some doubt

4条回答
  •  我在风中等你
    2020-12-08 00:12

    newArary = oldArray isn't a copy at all. You end up with two pointers pointing to the exact same memory location.

    newArray = [NSMutableArray arrayWithArray:oldArray]; is a shallow copy. You end up with two distinct arrays, so if you were to remove or add items from one array, it wouldn't affect the other array. However, the items in the two arrays are identical. If the first element of oldArray were an NSMutableDictionary and you added a key to it, you'd see that change on the first element of newArray as well (since those two objects are the same).

    To do a deep copy, you would have to make a new array, and each element of the new array would be a deep copy of the corresponding element of the old array. (Yes, that definition is recursive).

提交回复
热议问题