深複製和淺複製 二

2021-07-15 18:52:15 字數 2030 閱讀 1643

//

// main.m

// 深複製和淺複製(二)

//// created by yaomars on 16/4/27.

//#import int main(int argc, const char * argv) ; //特別注意可變字典不可以用這種方式賦值

//**************************第二步:建立可變副本和不可變副本**********************************

nsdictionary *ncdict1 = [dictm1 copy]; //不可變副本

nsdictionary *ncdict2 = [dictm2 copy]; //不可變副本

nsdictionary *ncdict3 = [dictm3 copy]; //不可變副本

nsdictionary *ncdict4 = [dictm4 copy]; //不可變副本

nsmutabledictionary *mdict1 = [dictm1 mutablecopy]; //可變副本

nsmutabledictionary *mdict2 = [dictm2 mutablecopy]; //可變副本

nsmutabledictionary *mdict3 = [dictm3 mutablecopy]; //可變副本

nsmutabledictionary *mdict4 = [dictm4 mutablecopy]; //可變副本

//**************************第三步:測試可變副本能否增加鍵值對*********************************

nslog(@"舊的 mdict1 = %@",mdict1);

nslog(@"舊的 mdict2 = %@",mdict2);

nslog(@"舊的 mdict3 = %@",mdict3);

nslog(@"舊的 mdict4 = %@",mdict4);

[mdict1 setobject:@"value6" forkey:@"key6"]; //深複製產生的可變副本可以增加鍵值對

[mdict2 setobject:@"value6" forkey:@"key6"]; //深複製產生的可變副本可以增加鍵值對

[mdict3 setobject:@"value6" forkey:@"key6"]; //深複製產生的可變副本可以增加鍵值對

[mdict4 setobject:@"value6" forkey:@"key6"]; //深複製產生的可變副本可以增加鍵值對

nslog(@"新的 mdict1 = %@",mdict1);

nslog(@"新的 mdict2 = %@",mdict2);

nslog(@"新的 mdict3 = %@",mdict3);

nslog(@"新的 mdict4 = %@",mdict4);

//**************************第四步:測試不可變副本能否增加鍵值對*********************************

nslog(@"舊的 ncdict1 = %@",ncdict1);

nslog(@"舊的 ncdict2 = %@",ncdict2);

nslog(@"舊的 ncdict3 = %@",ncdict3);

nslog(@"舊的 ncdict4 = %@",ncdict4);

// [ncdict1 setvalue:@"value6" forkey:@"key6"]; //淺複製產生的不可變副本不可增加鍵值對,執行時會報錯

// [ncdict1 setvalue:@"value6" forkey:@"key6"]; //淺複製產生的不可變副本不可增加鍵值對,執行時會報錯

// [ncdict1 setvalue:@"value6" forkey:@"key6"]; //淺複製產生的不可變副本不可增加鍵值對,執行時會報錯

}return 0;

}

淺複製和深複製

在c 中,下面三種物件需要呼叫拷貝建構函式 有時也稱 複製建構函式 1 乙個物件作為函式引數,以值傳遞的方式傳入函式體 全域性函式,傳入的是物件 void g fun resume c 2 乙個物件作為函式返回值,以值傳遞的方式從函式返回 全域性函式 返回的是物件 resume g fun 3 乙個...

深複製和淺複製

以下 是否完全正確,執行可能得到的結果是 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class a class b b void sayhello b b int main 程式正常執行 程式編譯錯誤 程式崩潰 程式死迴圈 這個程式會直接崩潰 voidsayhello ...

深複製和淺複製

main.m 深複製和淺複製。created by yaomars on 16 4 27.import 建立乙個nsdictionary,並建立可變副本和不可變副本,說下是深複製還是淺複製。int main int argc,const char argv 第三種方式 建立乙個nsdictionar...