IOS开发中深拷贝与浅拷贝
2016-05-23 09:48
381 查看
简而言之:
1、对不可变的非集合对象,copy是指针拷贝,mutablecopy是内容拷贝
2、对于可变的非集合对象,copy,mutablecopy都是内容拷贝
3、对不可变的数组、字典、集合等集合类对象,copy是指针拷贝,mutablecopy是内容拷贝
4、对于可变的数组、字典、集合等集合类对象,copy,mutablecopy都是内容拷贝
但是,对于集合对象的内容复制仅仅是对对象本身,但是对象的里面的元素还是指针复制。要想复制整个集合对象,就要用集合深复制的方法,有两种:
(1)使用initWithArray:copyItems:方法,将第二个参数设置为YES即可
(2)将集合对象进行归档(archive)然后解归档(unarchive):
1、对不可变的非集合对象,copy是指针拷贝,mutablecopy是内容拷贝
2、对于可变的非集合对象,copy,mutablecopy都是内容拷贝
3、对不可变的数组、字典、集合等集合类对象,copy是指针拷贝,mutablecopy是内容拷贝
4、对于可变的数组、字典、集合等集合类对象,copy,mutablecopy都是内容拷贝
但是,对于集合对象的内容复制仅仅是对对象本身,但是对象的里面的元素还是指针复制。要想复制整个集合对象,就要用集合深复制的方法,有两种:
(1)使用initWithArray:copyItems:方法,将第二个参数设置为YES即可
NSDictionary shallowCopyDict = [[NSDictionary alloc] initWithDictionary:someDictionary copyItems:YES];
(2)将集合对象进行归档(archive)然后解归档(unarchive):
NSArray *trueDeepCopyArray = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:oldArray]];
相关文章推荐
- iOS View的Frame和bounds之区别,setbounds使用(深入探究)
- iOS开发插件推荐(1):利用神插件injectionforxcode倍增你的开发效率
- iOS开发-简单的循环结构分析
- iOS开发-简单的循环结构分析
- iOS中字迹动画效果
- iOS 三种录制视频方式
- 小结 iOS 中的 copy
- 【代码笔记】iOS-设置textView或者label的行间距方法
- 【代码笔记】iOS-设置textView或者label的行间距方法
- iOS RSA 加密解密及签名验证
- iOS 手势操作:拖动、捏合、旋转、点按、长按、轻扫、自定义
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
- iOS开发-继承特征详解
- iOS开发-继承特征详解
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
- 四大移动支付流程
- iOS简易版的 仿popviewcontroller 功能
- iOStableView 自动布局常见问题之页面滑动到最底时,下面多出44的距离!
- iOS 数据持久化之一属性类表
- ios数据之久化