iOS 中对象的拷贝
拷贝的目的:产生一个副本对象,跟源对象互不影响,即修改了源对象,不会影响副本对象,修改了副本对象,不会影响源对象。objc 中提供了2个拷贝方法分别是:copy,不可变拷贝,产生不可变副本;mutableCopy,可变拷贝,产生可变副本;对象拥有拷贝的能力需遵循 NSCopying 协议或者NSMutableCopying 协议。
深浅拷贝概念
浅拷贝:指针拷贝,副本对象与源对象指向同一片内存空间;浅拷贝只是对对象指针变量的拷贝,让几个对象共用一片内存,当内存销毁的时候,指向这片内存的几个指针需要重新定义才可以使用,要不然会成为野指针,但在 iOS 中内存管理中是通过引用计数的方式,内存销毁不会那么突然了;
深拷贝:内容拷贝,副本对象内存地址是自主分配,有自己独立的内存区域;副本对象与源对象只是属性值相同,其它毫无干系;
深浅拷贝创建的新对象,新的对象引用计数 (retain count) 为 1, 与旧的源对象引用计数无关,源对象引用计数没有变化;
集合类对象的拷贝
非集合类对象的拷贝
本文标题:iOS 中对象的拷贝
文章作者:zerocc
发布时间:2016年03月03日
原始链接:http://www.zerocc.com.cn/1607332587.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!
分享