iOS @property (copy) NSMutableArray *array;用copy、strong出现问题
2017-12-24 13:10
471 查看
//联系人:石虎 QQ:1224614774 昵称:嗡嘛呢叭咪哄
一、概念
copy属性的作用,一个属性标记了copy,当你调用他的setter方法,他会建立一个索引计数为1的对象,然后释放旧对象。
strong性的作用,强指针
二、代码测试
1.错误方法一
@property (copy) NSMutableArray * arrayCopy;//声明 copy
NSMutableArray *arrayStrong = [NSMutableArrayarray];//初始化
arrayCopy = arrayStrong;
2.错误方法二
@property (strong) NSMutableArray *arrayCopy;/声明 strong
NSMutableArray *arrayStrong = [NSMutableArray array];/初始化
arrayCopy = [arrayStrong copy];
注意:错误方法一 和 错误方法二是相同的,等价的;
3.结果
所以你的arrayCopy根本就是一个NSArray,所以报了
-[__NSArray0 removeAllObjects]: unrecognized selector sent to instance
0x14e14970
未找到实例方法的错误。因为NSArray没有removeAllObjects方法。
4.正确的写法应该是不用copy属性
@property (strong)
NSMutableArray * arrayCopy;
NSMutableArray* arrayStrong = [NSMutableArray array];
arrayCopy = [arrayStrong mutableCopy];
这里的arrayStrong可以是NSMutableArray也可以是NSArray;
谢谢!!!
一、概念
copy属性的作用,一个属性标记了copy,当你调用他的setter方法,他会建立一个索引计数为1的对象,然后释放旧对象。
strong性的作用,强指针
二、代码测试
1.错误方法一
@property (copy) NSMutableArray * arrayCopy;//声明 copy
NSMutableArray *arrayStrong = [NSMutableArrayarray];//初始化
arrayCopy = arrayStrong;
2.错误方法二
@property (strong) NSMutableArray *arrayCopy;/声明 strong
NSMutableArray *arrayStrong = [NSMutableArray array];/初始化
arrayCopy = [arrayStrong copy];
注意:错误方法一 和 错误方法二是相同的,等价的;
3.结果
所以你的arrayCopy根本就是一个NSArray,所以报了
-[__NSArray0 removeAllObjects]: unrecognized selector sent to instance
0x14e14970
未找到实例方法的错误。因为NSArray没有removeAllObjects方法。
4.正确的写法应该是不用copy属性
@property (strong)
NSMutableArray * arrayCopy;
NSMutableArray* arrayStrong = [NSMutableArray array];
arrayCopy = [arrayStrong mutableCopy];
这里的arrayStrong可以是NSMutableArray也可以是NSArray;
谢谢!!!
相关文章推荐
- iOS内存管理(6)--NSArray与NSMutableArray用copy修饰还是strong
- @property (copy) NSMutableArray *array; 这个写法会出什么问题
- 用@property (copy) NSMutableArray *array;会有什么问题?
- @property (copy) NSMutableArray *array; 这个写法会出什么问题
- 这个写法会出什么问题: @property (copy) NSMutableArray *array;
- 【iOS】NSMutableArray遍历删除内部元素的问题总结
- NSString为什么用copy而不是strong,NSMutableString为什么用strong而不是用copy(或者NSArray及NSMutableArray等)
- 为什么NSMutableArray必须用strong,而NSArray必须用copy?
- iOS之NSDictionary和NSArray以及NSMutableDictionary和NSMutableArray:将不再是问题
- NSMutableArray使用过程出现问题
- NSMutableArray 被copy、strong修饰后的变化
- NSMutableArray的strong改成copy就崩溃
- 【iOS开发】NSMutableArray使用中忽视的问题
- iOS-使用NSMutableArray时添加对象报错问题
- NSMutableArray使用copy声明所产生内存泄漏的问题
- IOS 编程中NSMutableArray的 replaceObjectAtIndex 异常问题
- OC的深拷贝与浅拷贝--NSArray与NSMutableArray应该使用copy还是strong?
- 为什么NSMutableArray必须用strong,而NSArray必须用copy?
- iOS 面试题~用@property声明NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
- iPhone/iOS中保存自定义对象(Custom Object/Custom Class)的数组(NSMutableArray/NSArray)到NSUserDefaults