【发布时间】:2013-01-27 21:20:28
【问题描述】:
我的ViewController 中有一个NSMutableArray,它是我的UITableView 的数据源,定义如下:
NSMutableArray *messageArray;
我有一个重新加载tableView数据的方法,在此之前,我想清除现有的表格数据。
如果我使用以下代码:
[messageArray removeAllObjects];
[self.tableView reloadData];
我得到以下异常:
2013-02-12 14:20:30.378 appname[20998:907] * 终止应用程序由于 未捕获的异常“NSInternalInconsistencyException”,原因: '-[__NSCFArray removeObjectAtIndex:]: 变异方法发送到 不可变对象' * 第一次抛出调用栈:(0x3939e3e7 0x35dd6963 0x3939e307 0x393200e7 0x392eb5e5 0x7cda3 0x3a236047 0x3a2360d1 0x3a236047 0x3a235ffb 0x3a235fd5 0x3a23588b 0x3a235d79 0x3a15e5c9 0x3a14b8b1 0x3a14b1bf 0x336305f7 0x33630227 0x393733e7 0x3937338b 0x3937220f 0x392e523d 0x392e50c9 0x3362f33b 0x3a19f291 0x79c11 0x39be4b20) libc++abi.dylib:终止调用抛出异常
但如果我使用下面的代码,它就可以工作。
NSMutableArray *emptyArray = [NSMutableArray new];
messageArray = emptyArray;
[self.tableView reloadData];
为什么我收到removeAllObjects 的错误?
这可能是罪魁祸首吗?
NSMutableDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:nil];
messageArray = responseDictionary[@"data"];
【问题讨论】:
-
你在哪里分配messageArray?你在哪里填充它(即当你removeAllObjects时它里面有什么对象)?
标签: ios exception ios6 nsmutablearray