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];

你可能感兴趣的:(iOS 对于可变数组的操作的注意)