美文网首页
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