iOS copy和mutableCopy的使用

NSString *str1 = @"str1";
   NSString *str2 = str1;
   NSLog(@"指針地址:str1:%p  str2:%p",&str1,&str2);
//    輸出:指針地址:str1:0x7ffee8fa80f8  str2:0x7ffee8fa80f0
   NSLog(@"指針指向的內(nèi)存地址:str1:%p  str2:%p",str1,str2);
//    輸出:指針指向的內(nèi)存地址:str1:0x106c57188  str2:0x106c57188
   NSLog(@"內(nèi)存中的內(nèi)容:str1:%@  str2:%@",str1,str2);
//    輸出:內(nèi)存中的內(nèi)容:str1:str1  str2:str1
   NSLog(@"內(nèi)存塊中的16進(jìn)制內(nèi)容:str1:%X  str2:%X",str1,str2);
//    輸出:內(nèi)存塊中的16進(jìn)制內(nèi)容:str1:6C57188  str2:6C57188
//    總結(jié):兩個(gè)不同的指針指向了同一塊內(nèi)存
   NSString *str3 = [str1 copy];
//    以上代碼為淺拷貝,str1和str3兩個(gè)不同的指針指向了同一塊內(nèi)存
   NSString *str4 = [str1 mutableCopy];
//    以上代碼為深拷貝,str1和str4兩個(gè)不同的指針指向了不同的內(nèi)存
    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(@"指針指向的內(nèi)存地址:str1:%p  str2:%p",str1,str2);
//    輸出:指針指向的內(nèi)存地址:str1:0x604000240720  str2:0x604000240720
    NSLog(@"內(nèi)存中的內(nèi)容:str1:%@  str2:%@",str1,str2);
//    輸出:內(nèi)存中的內(nèi)容:str1:st1__str__str2  str2:st1__str__str2
    NSLog(@"內(nèi)存塊中的16進(jìn)制內(nèi)容:str1:%X  str2:%X",str1,str2);
//    輸出:內(nèi)存塊中的16進(jìn)制內(nèi)容:str1:5F5F0  str2:5F5F0
//    總結(jié):兩個(gè)不同的指針指向了同一塊內(nèi)存
    NSString *str3 = [str1 copy];
//    以上代碼為深拷貝,str1和str3兩個(gè)不同的指針指向了不同的內(nèi)存
    NSString *str4 = [str1 mutableCopy];
//    以上代碼為深拷貝,str1和str4兩個(gè)不同的指針指向了不同的內(nèi)存

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容