iOS 字符串的copy,mutableCopy(笔记)

首先,声明

@property(nonatomic,copy)NSString * str1; //不可变字符串
@property(nonatomic,copy)NSMutableString * str2;//可变字符串

 // %p ,_str1 取地址     %p,&_str1 取指针地址
    NSLog(@"str1 = %@  value = %p",_str1,_str1);
    NSLog(@"str1 = %@ copy value = %p",[_str1 copy],[_str1 copy]);
    NSLog(@"str1 = %@  mutableCopy value= %p",[_str1 mutableCopy],[_str1 mutableCopy]);
    
    NSLog(@"str2 = %@  value = %p",_str2,_str2);
    NSLog(@"str2 = %@ copy value = %p",[_str2 copy],[_str2 copy]);
    NSLog(@"str2 = %@  mutableCopy value= %p",[_str2 mutableCopy],[_str2 mutableCopy]);
    
    
    NSMutableString *str4 = [NSMutableString stringWithString:@"hello"];
    
    NSString *str5 = [str4 copy];
    NSString * str6 = str4;
    
    
    
    NSLog(@"%@ , %p",str4,str4);
    [str4 appendString:@"world"];
    NSLog(@"%@ , %p",str4,str4);
    NSLog(@"%@ , %p",str5,str5);
    NSLog(@"%@ , %p",str6,str6);



内存地址都不一样,说明此时都是做内容拷贝、深拷贝


**2016-08-12 10:52:38.390 Copy[1794:93551] str1 = 1  value = 0x1099c3068**
**2016-08-12 10:52:38.390 Copy[1794:93551] str1 = 1 copy value = 0x1099c3068**
**2016-08-12 10:52:38.390 Copy[1794:93551] str1 = 1  mutableCopy value= 0x7fb69ac08ba0**
**2016-08-12 10:52:38.390 Copy[1794:93551] str2 = 1  value = 0x7fb69ac093c0**
**2016-08-12 10:52:38.390 Copy[1794:93551] str2 = 1 copy value = 0xa000000000000311**
**2016-08-12 10:52:38.391 Copy[1794:93551] str2 = 1  mutableCopy value= 0x7fb69ae08260**
**2016-08-12 10:52:38.391 Copy[1794:93551] hello , 0x7fb69ad08090**
**2016-08-12 10:52:38.391 Copy[1794:93551] helloworld , 0x7fb69ad08090**
**2016-08-12 10:52:38.391 Copy[1794:93551] hello , 0xa00006f6c6c65685**
**2016-08-12 10:52:38.391 Copy[1794:93551] helloworld , 0x7fb69ad08090**
**2016-08-12 10:52:38.391 Copy[1794:93551] str1 = 1 , str2 = 1**

  1. 对非集合类对象的copy操作:

在非集合类对象中:对 immutable 对象进行 copy 操作,是指针复制,mutableCopy 操作时内容复制;对 mutable 对象进行 copy 和 mutableCopy 都是内容复制。用代码简单表示如下:

[immutableObject copy] // 浅复制
[immutableObject mutableCopy] //深复制
[mutableObject copy] //深复制
[mutableObject mutableCopy] //深复制

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、对象拷贝有两种方式:浅复制和深复制。顾名思义,浅复制,并不拷贝对象本身,仅仅是拷贝指向对象的指针;深复制是直接...
    滴答大阅读 787评论 0 2
  • 前言 不敢说覆盖OC中所有copy的知识点,但最起码是目前最全的最新的一篇关于 copy的技术文档了。后续发现有新...
    zyydeveloper阅读 3,422评论 4 35
  • 本文为转载: 作者:zyydeveloper 链接:http://www.jianshu.com/p/5f776a...
    Buddha_like阅读 914评论 0 2
  • 这时节,我的故乡——青川的紫荆花正值繁茂,漫山如火。微风浮动,携裹着阵阵芬芳,熟悉的色彩,熟悉的味道,依然如同九年...
    分割黄昏的灯阅读 390评论 0 0
  • 我早就留意到了那颗树,长在公路那边的荒山上,笔直挺拔,倔强的紧抓着荒芜的土地。 十五岁那年...
    王子滴公举阅读 341评论 0 1