copy、mutableCopy 和赋值之间有什么区别?

fer*_*ndo 2 copy objective-c

我以为我理解了 copy 和 mutableCopy 之间的区别。但今天我对自己产生了怀疑。我还是不明白。

\n\n
NSArray *arrayB = [NSArray arrayWithObject:@"a"];\nNSArray *arrayA = [arrayB copy];\nNSArray *arrayC = [arrayB mutableCopy];\nNSArray *arrayD = arrayB;\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我对 arrayA、arrayC 或 arrayD\xef\xbc\x8c 进行一些更改时,arrayB 是否会与更改的 arrayA、arrayC 和 arrayD 之一具有相同的更改?

\n

Mal*_*oni 5

// Can't modify this NOW
NSArray *arrayB = [NSArray arrayWithObject:@"a"]; 

// Create another copy of Array B like XEROX. If you change in XEROX 
// it does not reflect to original Copy
NSArray *arrayA = [arrayB copy]; 

// This is a mutable copy so you can make changes in this and you have
// to change NSArray to NSMutableArray here as it the mutable copy.
NSMutableArray *arrayC = [arrayB mutableCopy]; 

// Any change made in arrayD reflect to arrayB but arrayD is NSArray
// (immutable) so you can not make any changes in arrayD
NSArray *arrayD = arrayB;
Run Code Online (Sandbox Code Playgroud)

希望这能帮助您解决问题。