美文网首页
@property Coyp Strong之旅

@property Coyp Strong之旅

作者: 三月木头 | 来源:发表于2019-12-24 00:50 被阅读0次

    作为一个程序猿,是不是还经常困惑,此处讲解几个基础但是非常实用的列子。那就是属性Strong、Copy的修饰之旅。你是不是还经常迷惑,莫名其妙的代码就报了bug,莫名其妙数据就被改了,此处从属性修饰讲解一下为啥,有时候代码会被更改。

    先说结论:

    Strong:修饰可变数组
    Copy:修饰不可变数组

    区别:

       @property (nonatomic, strong) NSArray *array0;
       @property (nonatomic, copy) NSArray *array1;
       @property (nonatomic, strong) NSMutableArray *array2;
       @property (nonatomic, copy) NSMutableArray *array3;
    
    1. 首先验证一下 @property (nonatomic, strong) NSArray *array0;
        @property (nonatomic, strong) NSArray *array0;
    
        NSMutableArray *mutArray = [NSMutableArray arrayWithObjects:@"3",@"4",@"5", nil];
        self.array0 = mutArray;
    
        NSLog(@"%p",self.array0);
        NSLog(@"%p",mutArray);
    
        [mutArray addObject:@"6"];
    
        NSLog(@"%@",self.array0);
        NSLog(@"%@",mutArray);
    

    此处修饰的数组,如果self.array0 指向的是mutArray的指针,所以当mutArray进行添加对象后,self.array0打印的将是添加后的可变数组内容。
    所以 @property (nonatomic, strong) NSArray *array0;
    具体验证可以通过打印前后数组前后的指针查看,此处就不讲解了。

    1. 验证 @property (nonatomic, copy) NSArray *array1;
        @property (nonatomic, copy) NSArray *array1;
    
        NSMutableArray *mutArray = [NSMutableArray arrayWithObjects:@"3",@"4",@"5", nil];
        self.array1 = mutArray;
    
        NSLog(@"%p",self.array1);
        NSLog(@"%p",mutArray);
    
        [mutArray addObject:@"6"];
    
        NSLog(@"%@",self.array1);
        NSLog(@"%@",mutArray);
    

    此处修饰的数组,如果self.array1 指向新的指针,同mutArray指针是不同的。最后打印结果不同。因为self.array1新开辟的空间。只是mutArray指针指向的地址里面添加了@"6".
    所以@property (nonatomic, copy) NSArray *array1;

    1. 验证 @property (nonatomic, strong) NSMutableArray *array2;
      此处数组是可变的,使用strong修饰这个正确。
      @property (nonatomic, strong) NSMutableArray *array2;

    2. 验证 @property (nonatomic, copy) NSMutableArray *array3;
      此处 copy修饰了可变数组修饰了后,再对self.array3进行数组操作会导致crash, 原因是copy修饰可变数组后,会变成不可变数组。
      @property (nonatomic, copy) NSMutableArray *array3;

    相关文章

      网友评论

          本文标题:@property Coyp Strong之旅

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