NSMutableArray的strong改成copy就崩溃
2016-08-03 22:12
363 查看
先要搞明白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;
相关文章推荐
- NSString为什么用copy而不是strong,NSMutableString为什么用strong而不是用copy(或者NSArray及NSMutableArray等)
- iOS @property (copy) NSMutableArray *array;用copy、strong出现问题
- 为什么NSMutableArray必须用strong,而NSArray必须用copy?
- 为什么NSMutableArray必须用strong,而NSArray必须用copy?
- OC的深拷贝与浅拷贝--NSArray与NSMutableArray应该使用copy还是strong?
- iOS内存管理(6)--NSArray与NSMutableArray用copy修饰还是strong
- NSMutableArray 被copy、strong修饰后的变化
- 关于NSMutableArray 调用 addObject 方法崩溃
- 这个写法会出什么问题: @property (copy) NSMutableArray *array;
- MRC下 [NSMutableArray array] 经常导致崩溃的问题
- @property (copy) NSMutableArray *array; 这个写法会出什么问题
- NSMutableArray的removeAllObjects崩溃问题
- 给NSMutableArray添加copy属性就变成了NSArray
- 关于NSMutableArray 调用 addObject 方法崩溃
- NSMutableArray调用addObjectsFromArray方法崩溃问题
- NSMutableArray等容器类的Copy注意事项
- NSMutableArray崩溃信息
- 用@property (copy) NSMutableArray *array;会有什么问题?
- Objective-C Copy语法(一)对于Objective-C 提供的类对象NSString/NSMutableString; NSArray/NSMutableArray...
- [bugfix]copy属性参数将NSMutableArray变为NSArray类型