美文网首页
iOS copy和mutableCopy的使用

iOS copy和mutableCopy的使用

作者: heart_领 | 来源:发表于2018-12-12 10:27 被阅读8次
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两个不同的指针指向了不同的内存

相关文章

网友评论

      本文标题:iOS copy和mutableCopy的使用

      本文链接:https://www.haomeiwen.com/subject/gcruhqtx.html