小弟认为是这样的, 这种问题不该用常有的逻辑思维来评判, 这是苹果定的, 所以得听apple说
深拷贝和浅拷贝的本质是有没有开辟新的内存空间并复制对象的内容以及它所包含的对象的内容, 我们举几个例子
NSString *str1 = @"123";
NSString *str2 = [str1 copy];
NSString *str3 = [str1 mutableCopy];
通过log我们会知道str3是开辟了内存空间, mutableCopy这个方法在苹果官方的定义是返回mutableCopyWithZone返回的对象, 这复制了内容也开辟了内存,这是深拷贝
NSArray *arr = [NSArray arrayWithObjects:str1, nil];
NSMutableArray *arr2 = [arr mutableCopy];
问题来了, arr2是深拷贝吗? 如果用苹果自己的定义来说, 它不是, 因为arr的firstObject只是复制了指针而已, 但是苹果把它归结为deep copy(深拷贝).
所以, 不必纠结
都提倡****, 但是国外随便说, 我们行吗?
苹果规定不行用私有api, Google Voice就用了, 也可以上线啊, 自己的iBook也是各种私有api啊
但我们编码时还是要照apple说的 , 只有开辟了新的内存空间, 并且对象的和对象所包含的对象的内容都被复制, 才是深拷贝!