美文网首页
copy修饰可变数组

copy修饰可变数组

作者: Amor瑾年v | 来源:发表于2021-03-09 18:30 被阅读0次
截屏2021-03-09 下午6.23.40.png

这是因为self.array = b;触发了array的set方法,在set方法中:

- (void)setArray:(NSMutableArray *)array{
    if(_array != array){
        _array = [array copy];//变成不可变
    }
}

然后在[self.array addObject:@1];的时候找不到addObject奔溃。

把self.array = b改成_array = b赋值不会奔溃,因为是直接访问_array成员变量,没有触发set方法。

@interface ViewController ()
@property (nonatomic,copy) NSMutableArray *array;
@end

@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    NSMutableArray *b = [NSMutableArray array];
    _array = b;
    [self.array addObject:@1];
    NSLog(@"%@",[self.array class]);

}

相关文章

  • 浅拷贝与深拷贝

    /*浅拷贝:拷贝地址*/ /*深拷贝:拷贝对象*/ 用Strong修饰不可变数组:浅拷贝 用Copy修饰不可变数组...

  • strong和copy的区别

    stong修饰可变类型 copy修饰可变类型 strong修饰不可变类型 copy修饰不可变类型 总结如下:如果声...

  • copy修饰可变数组

    这是因为self.array = b;触发了array的set方法,在set方法中: 然后在[self.array...

  • iOS开发 崩溃问题总结

    数组 数组越界 向可变数组中存入nil 用copy修饰的可变数组,添加、修改元素 多线程 在子线程中刷线UI可能导...

  • 方正证券iOS面试

    git中merge和rebase的差别,使用git的流程 strong和copy的差别,可变数组使用copy来修饰...

  • iOS 运行崩溃总结

    1.数组数组越界向可变数组中存入nil用copy修饰的可变数组,添加、修改元素多线程在子线程中刷线UI可能导致崩溃...

  • iOS--可变数组、归解档、UISwich

    1、可变数组: 1.最近在使用可变数组用copy修饰的时候,向数组中添加或者移除元素会导致崩溃。在查看原因的时候会...

  • 关于数组的深复制浅复制

    数组使用copy和MutableCopy复制: 1.不可变数组+copy=浅复制 2.不可变数组+mutableC...

  • 为什么NSArray,NSString,NSDictionary

    字符串使用copy修饰是为了防止在被可变字符串类型赋值后,修改可变字符串,会同时改变自身。集合类型使用copy修饰...

  • iOS copy和mutableCopy

    一、copy (1)用copy修饰的 或者赋值的 变量肯定是不可变的。 (2)用copy赋值,要看源对象是否是可变...

网友评论

      本文标题:copy修饰可变数组

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