关于[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object的报错分析
2014-03-25 12:53
447 查看
首先,我们来分析一下这个报错的主要意思
mutating method sent to immutable object
说的是一个不可变的对象使用了可变的方法。
这里面也许很多人会感到奇怪,我数组明明创建的是一个NSMutableArray,为什么突然说我不可变了呢?
原因其实很简单,当一个NSMutavbleArray没有采用addobject来添加元素,而是直接赋值的时候,就会从一个可变数组编译成了不可变数组。
举个例子:
self.tableArr = [NSMutableArrayarrayWithCapacity:0];
self.tableArr = [dicobjectForKey:@"result"];
[self.tableArrremoveAllObjects];
tableArr创建的是一个NSMutableArray可变数组,然后又直接赋值,
这时候其实已经相当于一个NSArray不可变数组了,
然后又走了一个removeAllObjects可变数组的移除元素方法。
所以会导致直接崩溃,出现上面的报错。
解决办法主要有两个:第一就是把self.tableArr =
[dic objectForKey:@"result"]变成
[self.tableArraddObject:[dicobjectForKey:@"result"]].
第二个就是把[self.tableArr removeAllObjects]
变成self.tableArr
= [NSMutableArrayarrayWithCapacity:0].
转载请注明出处/article/9887424.html。谢谢
mutating method sent to immutable object
说的是一个不可变的对象使用了可变的方法。
这里面也许很多人会感到奇怪,我数组明明创建的是一个NSMutableArray,为什么突然说我不可变了呢?
原因其实很简单,当一个NSMutavbleArray没有采用addobject来添加元素,而是直接赋值的时候,就会从一个可变数组编译成了不可变数组。
举个例子:
self.tableArr = [NSMutableArrayarrayWithCapacity:0];
self.tableArr = [dicobjectForKey:@"result"];
[self.tableArrremoveAllObjects];
tableArr创建的是一个NSMutableArray可变数组,然后又直接赋值,
这时候其实已经相当于一个NSArray不可变数组了,
然后又走了一个removeAllObjects可变数组的移除元素方法。
所以会导致直接崩溃,出现上面的报错。
解决办法主要有两个:第一就是把self.tableArr =
[dic objectForKey:@"result"]变成
[self.tableArraddObject:[dicobjectForKey:@"result"]].
第二个就是把[self.tableArr removeAllObjects]
变成self.tableArr
= [NSMutableArrayarrayWithCapacity:0].
转载请注明出处/article/9887424.html。谢谢
相关文章推荐
- [__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object的报错分析及解决
- reason: '-[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object
- reason: '-[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object
- reason: '-[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object' 错误
- [__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object
- ios -[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object
- reason: '-[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object
- reason: '-[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object
- iOS程序崩溃,提示[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object’的解决办法
- 关于问题:reason: '* -[NSCFArray insertObject:atIndex:]: mutating method sent to immutable..
- 关于问题:reason: '* -[NSCFArray insertObject:atIndex:]: mutating method sent to immutable..
- 关于问题:reason: '* -[NSCFArray insertObject:atIndex:]: mutating method sent to immutable..
- 关于问题:reason: '* -[NSCFArray insertObject:atIndex:]: mutating method sent to immutable..
- 关于问题:reason: '* -[NSCFArray insertObject:atIndex:]: mutating method sent to immutable..
- -[__NSCFArray replaceObjectAtIndex:withObject:]: mutating method sent to immutable object'
- -[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable obje
- -[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable obje
- NSCFArray insertObject:atIndex:]: mutating method sent to immutable obje的解决方法
- reason: '* -[NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
- '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'