美文网首页
407,这个写法会出什么问题: @property (copy)

407,这个写法会出什么问题: @property (copy)

作者: 枫叶1234 | 来源:发表于2021-01-19 05:43 被阅读0次

    两个问题:1、添加,删除,修改数组内的元素的时候,程序会因为找不到对应的方法而崩溃.因为 copy 就是复制一个不可变 NSArray 的对象;2、使用了 atomic 属性会严重影响性能 ;

    第1条的相关原因在下文中有论述《用@property声明的NSString(或NSArray,NSDictionary)经常使用 copy 关键字,为什么?如果改用strong关键字,可能造成什么问题?》 以及上文《怎么用 copy 关键字?》也有论述。

    比如下面的代码就会发生崩溃

    // .h文件
    // http://weibo.com/luohanchenyilong/
    // https://github.com/ChenYilong
    // 下面的代码就会发生崩溃
    
    @property (nonatomic, copy) NSMutableArray *mutableArray;
    
    // .m文件
    // http://weibo.com/luohanchenyilong/
    // https://github.com/ChenYilong
    // 下面的代码就会发生崩溃
    
    NSMutableArray *array = [NSMutableArray arrayWithObjects:@1,@2,nil];
    self.mutableArray = array;
    [self.mutableArray removeObjectAtIndex:0];
    

    接下来就会奔溃:

    -[__NSArrayI removeObjectAtIndex:]: unrecognized selector sent to instance 0x7fcd1bc30460
    

    相关文章

      网友评论

          本文标题:407,这个写法会出什么问题: @property (copy)

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