关于NSMutableArray 调用 addObject 方法崩溃

对于NSMutableArray类调用addObject方法实现向可变数组中写入数据是比较常用的,今天我在一个项目中调用此方法时却引起了程序的crash,于是我通过全局断点将crash原因定位到图中浅绿色一行:

关于NSMutableArray 调用 addObject 方法崩溃_第1张图片

其中定义变量如下:

@property(nonatomic,copy)NSMutableArray *documentListArray;


后来经过查阅资料和请教他人得知: copy关键字在修饰除OC某些基础类型(如NSString)外的类型时,需要重写NSOject类方法:

+ (id)copyWithZone:(struct _NSZone *)zone OBJC_ARC_UNAVAILABLE;


否则调用时会导致数据异常引起崩溃.

所以此处解决方法有二:

1.重写copyWithZone方法返回新的对象.
2.将copy关键字换成strong关键字实现强引用即可,如下:

@property(nonatomic,strong)NSMutableArray *documentListArray;


再编译时,便不会再有问题了.




你可能感兴趣的:(iOS开发,OC浅解)