copy和mutableCopy方法简单认识
来源:互联网 发布:xampp默认数据库密码 编辑:程序博客网 时间:2024/05/29 12:12
//// main.m// OC语言学习#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { //copy和mutableCopy方法// NSMutableArray *dataArray = [NSMutableArray arrayWithObjects:@"one",@"two",@"three", nil]; /* 上面使用不可变字符串来填充dataArray的元素(常量字符串对象是不可变的)。 下面使用可变字符串代替它来填充数组,这样就可以改变数组中的一个字符串 */ NSMutableArray *dataArray = [NSMutableArray arrayWithObjects: [NSMutableString stringWithString:@"one"], [NSMutableString stringWithString:@"two"], [NSMutableString stringWithString:@"three"], nil ]; NSMutableArray *dataArray2; NSMutableString *mStr; //复制一份 dataArray2 = [dataArray mutableCopy]; mStr = [dataArray objectAtIndex:0]; [mStr appendString:@"ONE"]; //将字符串追加到这个元素 NSLog(@"%@",dataArray); NSLog(@"%@",dataArray2[0]);//输出:oneONE (原始数组及其副本中的第一个元素的值都被修改了) /* 从集合中获取元素时,就得到了这个元素的一个新引用,但并不是一个新副本。 所以,对dataArray调用objectAtIndex:方法时,返回的对象与dataArray中的第1个元素都指向内存中的同一个对象。 */ //为上面副本的第一个元素也会改变? /* 这与默认的浅拷贝方式有关。它意味着使用 mutableCopy方法 复制数组时,在内存中为新的数组对象分配了空间,并且将单个元素复制到新数组中。 然而原始数组中的每个元素复制到新位置,仅将引用从一个数组元素复制到另一个数组元素。 */ //若要为数组中每个元素创建完全不同的副本,应该怎么办? //答:深拷贝(也叫深复制) mStr = [NSMutableString stringWithString:[dataArray2 objectAtIndex:0]]; [mStr appendString:@"ONE"]; [dataArray2 replaceObjectAtIndex:0 withObject:mStr]; NSLog(@"dataArray2[0]= %@",dataArray2[0]); //dataArray2[0]= oneONEONE NSLog(@"dataArray[0]= %@",dataArray[0]); //dataArray[0]= oneONE //这样只更改了dataArray2的第一个元素 } return 0;}
0 0
- copy和mutableCopy方法简单认识
- copy和mutableCopy
- iphone copy 和mutablecopy
- copy和mutablecopy浅见
- copy和mutablecopy
- copy和mutablecopy
- copy和mutablecopy
- copy和mutableCopy
- Copy和MutableCopy
- copy和mutableCopy
- copy和mutableCopy
- copy和MutableCopy
- copy和mutableCopy
- copy和mutableCopy
- Copy和MutableCopy
- copy和mutableCopy,retain
- copy 和 mutableCopy
- copy和mutablecopy
- 交互体验杂记
- M3U8文件真实TS流获取工具
- Ansible安装问题汇总(yum修复问题)
- maven工程中Springmvc-Mybatis-Mysql的简单整合
- iPhone OpenGL ES 2.0 教程
- copy和mutableCopy方法简单认识
- 苹果Mac电脑桌面下面Dock栏的下载不见了怎么办
- 拨钟问题的若干解法
- nginx配置tomcat https websockets等问题汇总解决方式
- #Objective - C - sixth-Day OC小练习 省市区排序
- CSS padding margin border属性详解
- Spring入门Blog[九、Spring Aop 用xml的方式实现]
- Java IO系列2 InputStream之ObjectInputStream
- NSIS笔记