深拷贝/浅拷贝详谈

2018-08-29  本文已影响0人  我是好宝宝_6966

定义

使用场景

  1. 对非容器类对象(如NSString、NSMutableString类对象)使用浅拷贝:拷贝的是对象的地址,没有新的内存被分配,只是原来的那块内容多了一个指针指向。也就是说新对象跟原对象都是指向的同一个内存地址,故内容一样
  2. 对非容器类对象(如NSData、NSMutableData类对象)使用深拷贝:拷贝的是整个对象的内容,是通过给新对象分配了一块新的内存,然后将原对象内存中的内容一模一样在新的内存中写一份。所以内容是一样的,但两者内存地址不同
  3. 对容器类对象(如NSArray、NSMutableArray对象)使用浅拷贝:新的容器类对象也是指向新的内容地址,但是容器内保存的对象没有进行拷贝,指向的内存地址还是和原容器对象内保存的对象指向的内存地址是一样的,即同一个内存地址
  4. 对容器类对象(NSDIctionary、NSMutableDictionary类对象)使用深拷贝:对容器对象中的每一个元素都进行拷贝

MRC下的修饰词

上一篇 下一篇

猜你喜欢

热点阅读