深拷贝(mutableCopy)和浅拷贝(Copy)总结

两个的不同点


1. 浅拷贝

  • 不可变对象执行不可变拷贝(copy)就是浅拷贝
  • copy创建的是不可变副本(NSString、NSArray、NSDictionary)
  • shallow copy 浅拷贝(指针拷贝):相当于做了一次retain操作,引用计数器加1,没有产生新的对象,源对象和副本对象是同一个对象

2. 深拷贝

  • 如果执行拷贝时,只要有可变的无论是可变的对象还是可变拷贝(mutableCopy)就是深拷贝
  • mutableCopy创建的是可变副本(NSMutableString、NSMutableArray、NSMutableDictionary)
  • deep copy深拷贝(内容拷贝):源对象和副本对象是两个不同的对象,源对象的计数器不变,副本对象的计数器加1(产生了一个新的对象)

只要源对象和副本对象都不可变才是浅拷贝,其他都是深拷贝!

你可能感兴趣的:(深拷贝(mutableCopy)和浅拷贝(Copy)总结)