集合(NSArray,NSSet,NSDictionary等)使用copy與mutableCopy的區別是類似的,下面以NSMutableArray、NSArray 為例子驗證如下:
NSMutableArray *arrayM=[NSMutableArray arrayWithObjects:@"hello",@"word", nil]; id objM=[arrayM mutableCopy]; id obj=[arrayM copy]; NSLog(@"objM:%@-----obj:%@",[objM class],[obj class]);
列印的結果:objM:__NSArrayM-----obj:__NSArrayI
NSArray *array=@[@"hello",@"word"]; id objM1=[array mutableCopy]; id obj1=[array copy]; NSLog(@"objM1:%@-----obj1:%@",[objM1 class],[obj1 class]);
列印的結果:objM1:__NSArrayM-----obj1:__NSArrayI
結論:
無論集合是否為可變集合,
對集合mutableCopy 得到的是可變集合;對集合copy 得到的是不可變集合;