美文网首页
NSArray和NSMutableArray 做 copy,mu

NSArray和NSMutableArray 做 copy,mu

作者: 骑着毛驴走起来 | 来源:发表于2019-01-03 23:37 被阅读14次

     1、对不可变的对象做 copy:得到的是不可变对象的地址,浅拷贝,拷贝指针,所以,没有产生新对象,依旧不可变;———>浅拷贝

     2、对不可变的对象做 mutableCopy :产生新的对象,该对象是可变的。———>深拷贝

     3、对可变对象做 copy:得到的是新地址,也就是说,产生了新对象,但是,新对象是不可变的;———>深拷贝

     4、对可变对象做 mutableCopy:产生新的对象,该对象是可变的。———>深拷贝

    NSArray *arr1 = @[@"abc"];                                                                                       NSMutableArray *arr2 =[arr1 mutableCopy];                                                   NSMutableArray *arr3 =[arr2 copy];                                                               [arr2 addObject:@"def"];                                                                                                       [arr3 addObject:@"def"]; //arr3为不可变数组,运行时会崩溃                                                                                                              //打印对象的内存地址                                                                                                   NSLog(@"内存地址arr1:%p---arr2:%p***arr3:%p",arr1,arr2,arr3);                                                  

    NSMutableArray *arr4 = [NSMutableArray arrayWithObjects:@"ghi", nil];    NSMutableArray *arr5 =[arr4 copy];                                                                     NSMutableArray *arr6 =[arr5 mutableCopy];                                                                         [arr5 addObject:@"jkl"];//arr5为不可变数组,运行时会崩溃                                               [arr6 addObject:@"jkl"];                                                                                                                //打印对象的内存地址                                                                                                   NSLog(@"内存地址arr4:%p---arr5:%p***arr6:%p",arr4,arr5,arr6); 

    打印对象的内存地址为

    内存地址arr1:0x600002cc0d00---arr2:0x600002088e40***arr3:0x600002cc0da0                                                                                                                          内存地址arr4:0x6000020949f0---arr5:0x600002cd6b90***arr6:0x600002094a20

    相关文章

      网友评论

          本文标题:NSArray和NSMutableArray 做 copy,mu

          本文链接:https://www.haomeiwen.com/subject/iiecrqtx.html