我是新來obj-c開發,但部分有C開發背景。這可能是一個noob問題,但我無法在其他地方得到確切的答案。是什麼數組和字符串以及可能的其他類型的對象,這些片段之間的區別:Objective-C =運算符vs stringWithString/arrayWithArray
NSArray *original = [NSArray arrayWithObjects:someObjects,nil];
//Case 1
NSArray *copy1 = original;
//Case 2
NSArray *copy2 = [NSArray arrayWithArray:original];
和字符串
NSString *original = @"aString";
//Case 1
NSString *copy1 = original;
//Case 2
NSString *copy2 = [NSString stringWithString:original];
如果我更改Copy1,然後COPY2後來將他們在原來的反映對象?並且相同的規則是否適用於其他對象類型?
'NSArray'和'NSString'都是理解基本指針語義和對象身份的最好例子**不創建副本**如果原始文件不能更改(是不可變的)。 –
您無法更改ether copy1或copy2指向的字符串;他們是不變的。但是您可以將新值分配給copy1或copy2。 – geowar