Skip to main content
  1. Objective-C/

Copy & MutableCopy

·1 分钟
Copy MutableCopy OC
Objc - 系列文章之一
Part 2: 当前阅读
  • copy 是复制出不可变对象
  • mutableCopy 是复制出可变对象;
  • 复制出来的对象互不影响。
  • copy 复制不可变对象属于浅拷贝(浅拷贝就只是地址拷贝)
  • copy 复制可变对象属于深拷贝(需要复制出一份不可变对象,以免之前可变对象变更影响复制出来的对象)
  • mutableCopy 属于深拷贝(重新申请一份内存和指针)
- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSArray * arr = @[@1, @2];
    NSArray *arrCopy = [arr copy];
    NSMutableArray * arrMCopy = [arr mutableCopy];
    
    [arrMCopy addObject:@3];
    NSLog(@"%p, %p, %p", arr, arrCopy, arrMCopy);
    
    NSMutableArray * marr = [NSMutableArray arrayWithArray:arr];
    NSArray *marrCopy = [marr copy];
    NSMutableArray * marrMCopy = [marr mutableCopy];
    
    NSLog(@"%p, %p, %p", marr, marrCopy, marrMCopy);
}
copymutableCopy
NSStringNSStringNSMutableString
NSMutableStringNSStringNSMutableString
NSArrayNSArrayNSMutableArray
NSMutableArrayNSArrayNSMutableArray
NSDictionaryNSDictionaryNSMutableDictionary
NSMutableDictionaryNSDictionaryNSMutableDictionary


Objc - 系列文章之一
Part 2: 当前阅读