我是靠谱客的博主 朴素洋葱,最近开发中收集的这篇文章主要介绍@property (copy) NSMutableArray *array; 这个写法会出什么问题,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
我们先回忆一下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 *array; 这个写法会出什么问题的全部内容,希望文章能够帮你解决@property (copy) NSMutableArray *array; 这个写法会出什么问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复