OC十八浅复制和深复制
2015-11-22 00:00
148 查看
// // ViewController.m // 18章复制对象 // // Created by Zoujie on 15/11/21. // Copyright © 2015年 Zoujie. All rights reserved. // #import "ViewController.h" #import "Book.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. #pragma mark copy and mutableCopy method [self copyAndMutableCopy]; #pragma mark 浅复制与深复制 [self copyAnddeepCopy]; [self DictionaryDemo]; } -(void)copyAndMutableCopy { // NSArray *array = @[@"one",@"two",@"three",@"four"]; NSMutableArray *array = [NSMutableArray arrayWithObjects:@"one",@"two",@"three",@"four", nil]; NSMutableArray *dataArray; NSMutableArray *dataArray2; //一般赋值 // dataArray = [NSMutableArray arrayWithArray:array]; dataArray = array; [dataArray removeObjectAtIndex:0]; NSLog(@"dataArray===%@,array===%@,%p,%p",dataArray,array,dataArray,array); NSLog(@"%p,%p",[dataArray objectAtIndex:0],[array objectAtIndex:0]);// 打印内存地址 //复制一份,然后删除副本第一个元素 dataArray2 = [array mutableCopy]; [dataArray2 removeObjectAtIndex:0]; NSLog(@"dataArray===%@,array===%@",dataArray2,array); } -(void)copyAnddeepCopy { NSMutableArray *dataArray = [NSMutableArray arrayWithObjects:[NSMutableString stringWithString:@"one"],[NSMutableString stringWithString:@"two"],[NSMutableString stringWithString:@"three"], nil]; NSMutableArray *dataArray2; NSMutableString *mStr; NSLog(@"dataArray: "); for (NSString *elem in dataArray) NSLog(@" %@",elem); // 复制一份,然后删除副本的一个元素 dataArray2 = [dataArray mutableCopy]; mStr = dataArray[0]; [mStr appendString:@"ONE"]; //原始数组第一个元素也没修改了 //浅复制仅将数组元素的引用复制到了另一个数组元素 NSLog(@"dataArray: "); for (NSString *elem in dataArray) NSLog(@" %@",elem); NSLog(@"dataArray2: "); for (NSString *elem in dataArray2) NSLog(@" %@",elem); //若要为数组中的每个元素创建完全不同的副本,需要执行深复制 // Book *book = [[Book alloc]init]; // Book *newbook; // newbook = [book mutableCopy]; // 想要实现自己创建的类的复制,需要实现nscoping协议的方法 } -(id)copyWithZone:(NSZone *)zone { // Fraction *newFraction = [[Fraction allocWithZone:zone]init]; // //// [newFraction set] return nil; } -(void)DictionaryDemo { NSDictionary *dicDemo = [[NSDictionary alloc]init]; dicDemo = @{@"firstName":@"zou",@"Seconde":@"Jie",@"age":@"28"}; NSMutableDictionary *dicCopy; dicCopy = [dicDemo copy]; NSLog(@"dicCopy=======================================================%@",dicCopy); NSLog(@"dicDemo=======================================================%@",dicDemo); // [dicCopy removeObjectForKey:@"firstName"]; // // } @end
相关文章推荐
- SEO入门者需要掌握的基本SEO技巧
- 采用Apache Camel的开源系统集成方案与Fuse IDE的使用
- Virtualbox安装黑苹果10.11版
- JavaScript队列
- nodejs连接MySQL,做简单的CRUD
- Objective-c(3)
- mac bash
- Web项目代码架构研究
- 分析函数调用过程栈的布局(stack frame layout)
- elasticsearch 插件安装
- CSS选择器
- CSS的样式继承、层叠、特殊性和重要性
- 浅谈Android Service
- Java使用HttpClient抓取新浪邮箱
- 戏(细)说Executor框架线程池任务执行全过程(上)
- eclipse adt 搭建gradle的一些问题
- java web判断服务器是否是本机
- js 点击某个标签实现编辑、保存
- centos内核socket优化
- nginx内核socket优化