iOS 对于可变数组的操作的注意

2016.8.18

把一个可变量对应的方法让一个不可变量来调用

mutating method(可变量对应的方法):是那些在创建后可以被更改的变量所拥有的method,比如NSMutableArray,NSMutableDictionary 等

immutable object(不可改变的变量):就是那些被创建后不能被改变的变量:比如 NSArray NSDictionary等;

@property(nonatomic,strong)NSMutableArray*idArr;//身份证照片数组 存放的是图片地址

//idArr是从一个不可改变的变量类型为person.idCards得到的,所以,idArr这里也是一个不可改变量(即使我声明用的是NSMutableArray),但显然addObject是一个改变变量的操作,所以这是不允许的

就是因为这个变量之前被赋值了,而无法把一个可变的方法固执给一个不可变的对象

self.idArr= (NSMutableArray*)person.idCards;

//会崩在这一句

[_personalViewModel.idArraddObject:imgUrl];

//报错原因如下

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'

//修改后即可

[self.idArraddObjectsFromArray:person.idCards];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容