iOS copy和mutableCopy的使用

NSString *str1 = @"str1";
   NSString *str2 = str1;
   NSLog(@"指针地址:str1:%p  str2:%p",&str1,&str2);
//    输出:指针地址:str1:0x7ffee8fa80f8  str2:0x7ffee8fa80f0
   NSLog(@"指针指向的内存地址:str1:%p  str2:%p",str1,str2);
//    输出:指针指向的内存地址:str1:0x106c57188  str2:0x106c57188
   NSLog(@"内存中的内容:str1:%@  str2:%@",str1,str2);
//    输出:内存中的内容:str1:str1  str2:str1
   NSLog(@"内存块中的16进制内容:str1:%X  str2:%X",str1,str2);
//    输出:内存块中的16进制内容:str1:6C57188  str2:6C57188
//    总结:两个不同的指针指向了同一块内存
   NSString *str3 = [str1 copy];
//    以上代码为浅拷贝,str1和str3两个不同的指针指向了同一块内存
   NSString *str4 = [str1 mutableCopy];
//    以上代码为深拷贝,str1和str4两个不同的指针指向了不同的内存
    NSMutableString *str1 = [@"st1" mutableCopy];
    NSMutableString *str2 = str1;
    [str1 appendString:@"__str"];
    [str1 appendString:@"__str2"];
    NSLog(@"指针地址:str1:%p  str2:%p",&str1,&str2);
//    输出:指针地址:str1:0x7ffee0cb70f8  str2:0x7ffee0cb70f0
    NSLog(@"指针指向的内存地址:str1:%p  str2:%p",str1,str2);
//    输出:指针指向的内存地址:str1:0x604000240720  str2:0x604000240720
    NSLog(@"内存中的内容:str1:%@  str2:%@",str1,str2);
//    输出:内存中的内容:str1:st1__str__str2  str2:st1__str__str2
    NSLog(@"内存块中的16进制内容:str1:%X  str2:%X",str1,str2);
//    输出:内存块中的16进制内容:str1:5F5F0  str2:5F5F0
//    总结:两个不同的指针指向了同一块内存
    NSString *str3 = [str1 copy];
//    以上代码为深拷贝,str1和str3两个不同的指针指向了不同的内存
    NSString *str4 = [str1 mutableCopy];
//    以上代码为深拷贝,str1和str4两个不同的指针指向了不同的内存

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容