关于NSMutableArray 调用 addObject 方法崩溃

来源:互联网 发布:java 自动 path 编辑:程序博客网 时间:2024/04/25 17:15

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


其中定义变量如下:

@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;


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




2 0