用@property (copy) NSMutableArray *array;会有什么问题?
2018-02-01 21:26
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;
@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;
作者:包子_boom 链接:https://www.jianshu.com/p/74aaac0e72d7 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章推荐
- @property (copy) NSMutableArray *array; 这个写法会出什么问题
- @property (copy) NSMutableArray *array; 这个写法会出什么问题
- 这个写法会出什么问题: @property (copy) NSMutableArray *array;
- iOS @property (copy) NSMutableArray *array;用copy、strong出现问题
- NSMutableArray使用copy声明所产生内存泄漏的问题
- NSMutableArray使用过程出现问题
- NSArray,NSMutableArray的使用与内存问题
- IOS 编程中NSMutableArray的 replaceObjectAtIndex 异常问题
- NSArray,NSMutableArray的使用与内存问题
- NSMutableArray设置值,使用时注意问题
- 用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
- 给NSMutableArray添加copy属性就变成了NSArray
- Objective-C Copy语法(一)对于Objective-C 提供的类对象NSString/NSMutableString; NSArray/NSMutableArray...
- 用 @property 声明的 NSString (或 NSArray,NSDictionary) 经常使用 copy 关键字,为什么?如果改用strong关键字,可能造成什么问题?
- 用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
- 为什么NSMutableArray必须用strong,而NSArray必须用copy?
- iOS之NSDictionary和NSArray以及NSMutableDictionary和NSMutableArray:将不再是问题
- NSMutableArray 被copy、strong修饰后的变化
- 因为CGRect,CGPoint等不是NSObject的子类,因此不能够直接添加到NSMutableArray中,所以要先将其转换成NSObject的子类。NSValue类可以解决这个问题,见NSVa
- Iphone数组一些基础操作 NSArray/NSMutableArray,以及内存注意问题。