深复制和浅复制(二)
来源:互联网 发布:windows 10 dpi 编辑:程序博客网 时间:2024/06/04 19:25
//// main.m// 深复制和浅复制(二)//// Created by yaomars on 16/4/27.// Copyright © 2016年 yaomars. All rights reserved.//#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { //**************************第一步:创建NSMutableDictionary字典************************** // 第一种方式: 创建一个NSMutableDictionary NSMutableDictionary *dictM1 = [NSMutableDictionary dictionary]; //创建一个空的可变字典 // 第二种方式: 创建一个NSMutableDictionary NSMutableDictionary *dictM2 = [NSMutableDictionary dictionaryWithObject:@"value1" forKey:@"key1"]; // 第三种方式: 创建一个NSMutableDictionary NSMutableDictionary *dictM3 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"value2",@"key2",@"value3",@"key3", nil]; // 第四种方式: 创建一个NSMutableDictionary NSArray *keysArray = @[@"key4",@"key5"]; NSArray *valuesArray = @[@"value4",@"key5"]; NSMutableDictionary *dictM4 = [NSMutableDictionary dictionaryWithObjects:valuesArray forKeys:keysArray]; // 第五种方式: 创建一个NSMutableDictionary// NSMutableDictionary *dictM5 = @{@"key6":@"value6",@"key7":@"value7"}; //特别注意可变字典不可以用这种方式赋值 //**************************第二步:创建可变副本和不可变副本********************************** NSDictionary *ncDict1 = [dictM1 copy]; //不可变副本 NSDictionary *ncDict2 = [dictM2 copy]; //不可变副本 NSDictionary *ncDict3 = [dictM3 copy]; //不可变副本 NSDictionary *ncDict4 = [dictM4 copy]; //不可变副本 NSMutableDictionary *mDict1 = [dictM1 mutableCopy]; //可变副本 NSMutableDictionary *mDict2 = [dictM2 mutableCopy]; //可变副本 NSMutableDictionary *mDict3 = [dictM3 mutableCopy]; //可变副本 NSMutableDictionary *mDict4 = [dictM4 mutableCopy]; //可变副本 //**************************第三步:测试可变副本能否增加键值对********************************* NSLog(@"旧的 mDict1 = %@",mDict1); NSLog(@"旧的 mDict2 = %@",mDict2); NSLog(@"旧的 mDict3 = %@",mDict3); NSLog(@"旧的 mDict4 = %@",mDict4); [mDict1 setObject:@"value6" forKey:@"key6"]; //深复制产生的可变副本可以增加键值对 [mDict2 setObject:@"value6" forKey:@"key6"]; //深复制产生的可变副本可以增加键值对 [mDict3 setObject:@"value6" forKey:@"key6"]; //深复制产生的可变副本可以增加键值对 [mDict4 setObject:@"value6" forKey:@"key6"]; //深复制产生的可变副本可以增加键值对 NSLog(@"新的 mDict1 = %@",mDict1); NSLog(@"新的 mDict2 = %@",mDict2); NSLog(@"新的 mDict3 = %@",mDict3); NSLog(@"新的 mDict4 = %@",mDict4); //**************************第四步:测试不可变副本能否增加键值对********************************* NSLog(@"旧的 ncDict1 = %@",ncDict1); NSLog(@"旧的 ncDict2 = %@",ncDict2); NSLog(@"旧的 ncDict3 = %@",ncDict3); NSLog(@"旧的 ncDict4 = %@",ncDict4); // [ncDict1 setValue:@"value6" forKey:@"key6"]; //浅复制产生的不可变副本不可增加键值对,运行时会报错// [ncDict1 setValue:@"value6" forKey:@"key6"]; //浅复制产生的不可变副本不可增加键值对,运行时会报错// [ncDict1 setValue:@"value6" forKey:@"key6"]; //浅复制产生的不可变副本不可增加键值对,运行时会报错 } return 0;}
0 0
- 深复制和浅复制(二)
- 深复制和浅复制
- 深复制和浅复制
- 深复制和浅复制
- 深复制和浅复制
- 深复制和浅复制
- 深复制和浅复制
- 深复制和浅复制
- 深复制和浅复制
- 深复制和浅复制
- 浅复制和深复制
- 浅复制和深复制
- 深复制和浅复制
- 深复制和浅复制
- 深复制和浅复制
- 深复制和浅复制
- 浅复制和深复制
- 深复制和浅复制
- HDU 1181 变形课(连接单词串,DFS)
- Java NIO系列教程(三) Buffer
- 深复制和浅复制
- 真机Win7 64位,虚拟机MAC OS X 10.11用NAT无法上网问题,ip 169.254.xxx.xxx
- 能够提高开发效率的Eclipse实用操作
- 深复制和浅复制(二)
- 三种JAVA常用实现字符串反转(Reverse)的方法
- HDU 1231 最大连续子序列
- CSS3基础入门学习: 背景制作实例!
- 232. Implement Queue using Stacks
- Android开发架构规范
- 有序数组,插入一个数后还保证有序
- Java enum的用法详解
- MAVEN 实践 探讨====一个真实的故事