[__NSArrayI replaceObjectAtIndex:withObject:]:发送到实例的无法识别的选择器

use*_*801 4 cocoa objective-c nsmutablearray

我有一个NSMutableArray,我需要机会它的值,但我有这个错误:
[__ NSArrayI replaceObjectAtIndex:withObject:]:无法识别的选择器发送到实例0x5291db0
这是我的NSMutableArray的声明:

NSMutableArray *selectedOptions = [NSArray arrayWithObjects:[NSNumber numberWithInteger:0], nil]; 
Run Code Online (Sandbox Code Playgroud)

然后,我正在使用replaceObjectAtIndex方法,这样:

[self.selectedOptions replaceObjectAtIndex:0 withObject:[NSNumber numberWithInteger:1]];
Run Code Online (Sandbox Code Playgroud)

但我知道,那个错误,我正在使用NSMutableArray.
谢谢

das*_*ght 9

您正在创建一个常规的非变量NSArray.你的代码应该是

NSMutableArray *selectedOptions = [NSMutableArray arrayWithObjects:[NSNumber numberWithInteger:0], nil]; 
Run Code Online (Sandbox Code Playgroud)

Objective C非常动态,所以它在编译时没有发现这个错误.


Roh*_*wal 6

你需要初始化你NSMutableArray的做法

NSMutableArray *selectedOptions = [NSMutableArray alloc] init];
Run Code Online (Sandbox Code Playgroud)

通过初始化它NSArray,您不能再使用该repalceObjectAtIndex:withObject:方法,这是您的问题的原因.

NSMutableArray使用上面的行初始化之后,只需使用该addObject方法向其添加对象.