最近在使用iOS的可变数组时出现了一个错误,报错信息为:
reason: '-[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object'
字面的意思就是可变数组的方法发送给了一个不可变的对象。
声明和初始化的代码如下:
//声明 NSMutableArray *dataArray; //初始化 dataArray = [NSMutableArray array];
通过分析dataArray,发现只有在向服务器请求数据后,对dataArray进行了赋值,想来问题就是应该出现这里了。
[manager POST:requestUrl parameters:jsonDictionary success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"json: %@", responseObject); dataArray = responseObject; [self.tableView reloadData]; } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"%@", error); }];
所以问题应该是responseObject这个返回值是一个不可变的数组,在赋值后,dataArray也变成了不可变的数组。
如果想继续使用,做些处理就可以了,例如:
dataArray = [NSMutableArray arrayWithArray:dataArray];
参考:http://stackoverflow.com/questions/22381384/ios-error-nscfarray-removeobjectatindex-mutating-method-sent-to-immutable