Fork me on GitHub

OC中mutableCopy及copy与NSString和集合类

写在前面

iOS开发中可能有时候会接触到copymutableCopy这两个方法,而且其相关的内存问题经常出没于面试题中,本文简单介绍下mutableCopycopyNSString和集合类的相关问题。

copy, mutableCopy对NSString操作

在对NSString进行copy或者mutableCopy操作时可以使用下图的内存分配情况来表述

未命名.001.jpeg

未命名.002.jpeg

由上可得,

  • copyNSString 是浅拷贝,只拷贝指针
  • mutableCopy 对NSString`是深拷贝,拷贝指针及内容
  • copy 对NSMutableString` 是深拷贝,拷贝指针及内容
  • mutableCopyNSMutableString 是深拷贝,拷贝指针及内容

copy, mutableCopy对NSArray操作

在对NSArray进行copy或者mutableCopy操作时可以使用下图的内存分配情况来表述

未命名1.001.jpeg

未命名1.002.jpeg

由上面的图可以得到和NSString一致的答案。

copy, mutableCopy对NSDictionary操作

基本同copy, mutableCopyNSArray操作

copy, mutableCopy对NSSet操作

基本同copy, mutableCopyNSArray操作

最后

由上面的内存分配情况可得

  • copy 对 不可变类型是浅拷贝
  • copy 对 可变类型是深拷贝
  • mutableCopy 对 不可变类型是深拷贝
  • mutableCopy对 可变类型`深拷贝
- END -
关注微信公众号,发现更多精彩

文章作者:梁大红

特别声明:若无特殊声明均为原创,转载请注明,侵权请联系

版权声明:署名-非商业性使用-禁止演绎 4.0 国际