iOS常见的几个修饰词深入讲解

2020-01-21 07:08:02王冬梅

 

2.对集合类对象的copy操作

对immutableObject做copy操作


 NSArray * array = [NSArray arrayWithObject:@"1"];
 NSArray * copyArry = [array copy];
 NSMutableArray * mutableCopyArray = [array mutableCopy];
 
 NSLog(@"array:%p", array);
 NSLog(@"copyArry:%p", copyArry);
 NSLog(@"mutableCopyArray:%p", mutableCopyArray);

Log如下

2018-03-19 15:51:38.786167+0800 PropertyDesc[10283:759804] array:0x6000000094c0
2018-03-19 15:51:38.786278+0800 PropertyDesc[10283:759804] copyArray:0x6000000094c0
2018-03-19 15:51:38.786385+0800 PropertyDesc[10283:759804] mutableCopyArray:0x600000240030

可以看出array与copyArray的地址是一样的,而mutableCopyArray则不同。

对mutableObject做copy操作


 NSMutableString * string = [NSMutableString stringWithFormat:@"1"];
 NSMutableArray * array = [NSMutableArray arrayWithObject:string];
 NSArray * copyArry = [array copy];
 NSMutableArray * mutableCopyArray = [array mutableCopy];
 
 NSLog(@"array:%p", array);
 NSLog(@"copyArry:%p", copyArry);
 NSLog(@"mutableCopyArray:%p", mutableCopyArray);
 [array addObject:@"2"];
 [string appendString:@"1"];
 
 NSLog(@"array:%p - %@", array, array);
 NSLog(@"copyArry:%p - %@", copyArry, copyArry);
 NSLog(@"mutableCopArray:%p - %@", mutableCopyArray, mutableCopyArray);

Log如下