IOS数组的深浅拷贝
来源:互联网 发布:云计算与应用就业前景 编辑:程序博客网 时间:2024/05/16 15:26
看了一下网上对于NSArray和NSMutableArray的深浅拷贝的文章,觉得有些地方不靠谱,自己做了一下实验,将结果留档
NSArray *mArray1 = [NSArray arrayWithObjects:[NSMutableString stringWithString:@"a"],@"b",@"c",nil]; NSArray *mArrayCopy2 = [mArray1 copy]; NSLog(@"mArray1 address:%p", mArray1); NSLog(@"mArrayCopy2 address:%p", mArrayCopy2); NSLog(@"The first object address in mArray1:%p", [mArray1 objectAtIndex:0]); NSLog(@"The first object address in mArrayCopy2:%p", [mArrayCopy2 objectAtIndex:0]); NSMutableArray *mArrayMCopy1 = [mArray1 mutableCopy]; NSLog(@"mArrayMCopy1 address:%p", mArrayMCopy1); NSLog(@"The first object address in mArrayMCopy1:%p", [mArrayMCopy1 objectAtIndex:0]);
如上所示,mArray1是一个fixed的Array, 自己不能变化。 mArrayCopy2是使用copy方法复制的fixed对象 mArrayMCopy1是使用mutableCopy方法复制的可变数组
输出结果如下
2013-05-29 03:05:58.649 CopyTest[4679:707] mArray1 address:0x100114d402013-05-29 03:05:58.652 CopyTest[4679:707] mArrayCopy2 address:0x100114d402013-05-29 03:05:58.654 CopyTest[4679:707] The first object address in mArray1:0x1001149e02013-05-29 03:05:58.655 CopyTest[4679:707] The first object address in mArrayCopy2:0x1001149e02013-05-29 03:05:58.657 CopyTest[4679:707] mArrayMCopy1 address:0x1030000a02013-05-29 03:05:58.658 CopyTest[4679:707] The first object address in mArrayMCopy1:0x1001149e0
可以看到mArray1和MArrayCopy2指向同一个数组地址,这个数组里面的第一个对象的地址也是相同的。但是mArrayMCopy1指向的是另外一个数组,这个数组是指针数组,他们指向的具体的对象的地址和mArray1是相同的,不是完全意义上的深拷贝,如果是完全意义上的深拷贝,应该指向对象的地址也会改变。当然这里尝试的是字符串。因为Xcode对字符串有优化,我想我应该使用别的对象来试试。
实践证明,和使用NSString的结果是一样的
- IOS数组的深浅拷贝
- 数组的深浅拷贝
- JS数组的深浅拷贝
- javascript 数组的深浅拷贝
- js 数组的深浅拷贝
- 详解iOS的深浅拷贝
- js 数组对象的深浅拷贝
- 对象和数组的深浅拷贝
- 实现数组和对象的深浅拷贝
- IOS深浅拷贝的深入分析
- IOS深浅拷贝的深入分析
- IOS深浅拷贝的深入分析
- IOS深浅拷贝的深入分析
- 关于IOS深浅拷贝的深入分析
- IOS深浅拷贝的深入分析
- ios深浅拷贝学习
- ios 深浅拷贝学习
- ios 深浅拷贝学习
- 我的北大同學的一些看法
- 重构——代码的坏味道
- php实战第十天
- LaTex 制作表格 合并行\multirow 合并列\multicolumn
- 没有True Speech声音解码器问题
- IOS数组的深浅拷贝
- CentOS6.4安装配置epel和rpmforge
- Permutations
- VS2010 can not watch the value of local variables
- Permutations II
- extjs store
- 全面创新:酷我音乐2013年5月14日正式版全面上线,抢先试用
- 2013UUSee与百度开放平台合作 开启互赢新战略
- ACM_调试技巧(不定期更新)