关于[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object的报错分析
??? 首先,我們來分析一下這個(gè)報(bào)錯(cuò)的主要意思
mutating method sent to immutable object
???說的是一個(gè)不可變的對象使用了可變的方法。
這里面也許很多人會(huì)感到奇怪,我數(shù)組明明創(chuàng)建的是一個(gè)NSMutableArray,為什么突然說我不可變了呢?
原因其實(shí)很簡單,當(dāng)一個(gè)NSMutavbleArray沒有采用addobject來添加元素,而是直接賦值的時(shí)候,就會(huì)從一個(gè)可變數(shù)組編譯成了不可變數(shù)組。
? ? ? ? 舉個(gè)例子:
self.tableArr = [NSMutableArrayarrayWithCapacity:0];
self.tableArr = [dicobjectForKey:@"result"];
? ? ? ? [self.tableArrremoveAllObjects];
tableArr創(chuàng)建的是一個(gè)NSMutableArray可變數(shù)組,然后又直接賦值,
這時(shí)候其實(shí)已經(jīng)相當(dāng)于一個(gè)NSArray不可變數(shù)組了,
然后又走了一個(gè)removeAllObjects可變數(shù)組的移除元素方法。
所以會(huì)導(dǎo)致直接崩潰,出現(xiàn)上面的報(bào)錯(cuò)。
解決辦法主要有兩個(gè):第一就是把self.tableArr?= [dic?objectForKey:@"result"]變成
[self.tableArraddObject:[dicobjectForKey:@"result"]].
第二個(gè)就是把[self.tableArr?removeAllObjects]
變成self.tableArr = [NSMutableArrayarrayWithCapacity:0].
轉(zhuǎn)載請注明出處http://blog.csdn.net/u013263917/article/details/22053039。謝謝
總結(jié)
以上是生活随笔為你收集整理的关于[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object的报错分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Objective-C中一种消息处理方法
- 下一篇: block 与 dispatch que