objective c,copy, mutableCopy区别
2016-01-19 21:52
561 查看
copy总是返回不能被修改的对象,mutableCopy返回可以被修改的对象
例:
NSArray *array = @[@"test", @"test2"];
NSMutableArray *arrayMu = [array copy];// arrayMu实际上被赋值成一个 NSArray 对象,这是如果调用NSMutableArray特有的方法会crash,例如[arrayMu removeObject:@"test"];
NSMutableArray *arrayM = [array mutableCopy]; //此时arrayM被赋值的是一个NSMutalbeArray对象,这时调用NSMutableArray特有的方法不会出现问题
另一个常见问题:
@property (nonatomic, copy) NSMutalbeArray *array; 这样声明有什么问题?
array 被赋值时得到的其实是一个NSArray对象,调用NSMutableArray特有的方法时会crash
例如这样调用:
NSMutableArray *testArray = [NSMutableArray arrayWithObjects:@"test", @"test2"];
self.array = testArray;//这行代码实际上相当于_array = [testArray copy];得到的是NSArray对象
例:
NSArray *array = @[@"test", @"test2"];
NSMutableArray *arrayMu = [array copy];// arrayMu实际上被赋值成一个 NSArray 对象,这是如果调用NSMutableArray特有的方法会crash,例如[arrayMu removeObject:@"test"];
NSMutableArray *arrayM = [array mutableCopy]; //此时arrayM被赋值的是一个NSMutalbeArray对象,这时调用NSMutableArray特有的方法不会出现问题
另一个常见问题:
@property (nonatomic, copy) NSMutalbeArray *array; 这样声明有什么问题?
array 被赋值时得到的其实是一个NSArray对象,调用NSMutableArray特有的方法时会crash
例如这样调用:
NSMutableArray *testArray = [NSMutableArray arrayWithObjects:@"test", @"test2"];
self.array = testArray;//这行代码实际上相当于_array = [testArray copy];得到的是NSArray对象
相关文章推荐
- Java中json数据问题.报错 A JSONObject text must begin with '{'
- VB6 安装完成,添加Windows Common Controls 6.0控件,报错Object Library Not Registered
- OC - 类的基本定义与方法的使用
- IOS开发--常用工具类收集整理(Objective-C)(持续更新)
- java中Array/List/Map/Object与Json互相转换详解
- 原型链与Object和Function
- page object
- objc_setAssociatedObject 使用
- Objective-C的hook方案(一): Method Swizzling
- 所有类的超类:Object类
- oc AssociatedObject (oc)
- jQuery.isEmptyObject() 函数详解
- 【转】IOS基础:深入理解Objective-c中@class的含义
- org.json.JSONException: Value of type java.lang.String cannot be converted to JSONObject
- object-c编程tips-jastor自动解析
- 使用CocoaPods开发并打包静态库
- GitHub 上排名前 100 的 Objective-C 项目简介
- 将 Objective-C 代码迁移到 Swift
- Java ObjectMapper String转HashMap
- #Android##bug#ObjectInputStream eof