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);
}
| copy | mutableCopy | |
|---|---|---|
| NSString | NSString | NSMutableString |
| NSMutableString | NSString | NSMutableString |
| NSArray | NSArray | NSMutableArray |
| NSMutableArray | NSArray | NSMutableArray |
| NSDictionary | NSDictionary | NSMutableDictionary |
| NSMutableDictionary | NSDictionary | NSMutableDictionary |
Objc - 系列文章之一
Part 2: 当前阅读