先要搞明白copy属性到底做了些啥 一个属性标记了copy,当你调用他的setter方法,他会建立一个索引计数为1的对象,然后释放旧对象。 例如 @property (copy) NSMutableArray * a; NSMutableArray* b = [NSMutableArray array]; a = b; 等同于 @property (strong) NSMutableArray * a; NSMutableArray* b = [NSMutableArray array]; a = [b copy]; 所以你的a根本就是一个NSArray,所以报了 -[__NSArray0 removeAllObjects]: unrecognized selector sent to instance 0x14e14970 未找到实例方法的错误。因为NSArray没有removeAllObjects方法。 正确的写法应该是不用copy属性 @property (strong) NSMutableArray * a; NSMutableArray* b = [NSMutableArray array]; a = [b mutableCopy]; 这里的b可以是NSMutableArray也可以是NSArray;
NSMutableArray的strong改成copy就崩溃
最新推荐文章于 2020-02-05 16:44:42 发布