关于[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object的报错分析

    首先,我们来分析一下这个报错的主要意思

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

转载请注明出处http://blog.csdn.net/u013263917/article/details/22053039。谢谢

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值