任何人都知道造成这次崩溃的原因:“[__ NSArrayI replaceObjectAtIndex:withObject:]:无法识别的选择器”?

时间:2014-11-12 02:44:09

标签: objective-c macos nstextview

最近我使用NSTextTable绘制表。我想要更改所选块的某些属性,因此将所选段落保存到字典中。复制段落后,一旦调用方法[NSTextTableBlock setBorderColor:],引发错误:

-[__NSArrayI replaceObjectAtIndex:withObject:]: unrecognized selector sent to instance 0x6000002442c0
我尝试了很多次,终于发现了一个现象,如果我不复制块,setBorderColor:没关系。 任何人都知道[NSTextTableBlock copy]与此错误的关系,为什么[NSTextTableBlock setBorderColor:]会导致此错误?我对这个错误感到很困惑。提前谢谢。

1 个答案:

答案 0 :(得分:4)

NSArray没有选择器replaceObjectAtIndex:withObject:(因此您无法调用它)。您实际上是在尝试修改无法修改的NSArray。您可能需要NSMutableArray。您可以从NSMutableArray创建NSArray,调用您的方法,然后将您对原始数组的引用替换为:

NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:array];
[mutableArray replaceObjectAtIndex:index withObject:object];
array = mutableArray;//now the array has been "updated"