Iphone NSMutableArray removeObjectAtIndex原因错误

Iphone NSMutableArray removeObjectAtIndex原因错误,iphone,objective-c,nsmutablearray,Iphone,Objective C,Nsmutablearray,这可能是一个简单的问题,但是如果有人能给我一个提示,在下面的场景中有什么问题,我只是不明白。我有一个NSMutableArray“playerArray”,它有对象“零”、“一”、“二”和“三” 我正在尝试删除“行”中的对象,但它不起作用。是否会因为异常不响应removeObjectAtIndex而引发异常,从而返回一个不可变数组 结果是: 玩家阵列:( 零, 一个, 两个, 三个 ) 2010-11-21 20:58:46.681法姆库伊v2[2166:207]行:1 2010-11-21 2

这可能是一个简单的问题,但是如果有人能给我一个提示,在下面的场景中有什么问题,我只是不明白。我有一个NSMutableArray“playerArray”,它有对象“零”、“一”、“二”和“三”

我正在尝试删除“行”中的对象,但它不起作用。是否会因为异常不响应removeObjectAtIndex而引发异常,从而返回一个不可变数组

结果是:

玩家阵列:(
零,
一个,
两个,
三个
)
2010-11-21 20:58:46.681法姆库伊v2[2166:207]行:1
2010-11-21 20:58:46.682 famquick_v2[2166:207]-[[uuu NSArrayI removeObjectAtIndex:]:发送到实例0x5e3b9a0的无法识别的选择器
2010-11-21 20:58:46.683 FAMQUITY_v2[2166:207]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[\uu NSArrayI removeObjectAtIndex::]:未识别的选择器发送到实例0x5e3b9a0'


错误消息表明playerArray是NSArray的实例,而不是NSMutableArray。您不能对NSArray的实例调用removeObjectAtIndex

-[__NSArrayI removeObjectAtIndex:]: unrecognized selector sent to instance

看起来您的数组实际上不是NSMutableArray。请通过记录类名进行验证:

NSLog(NSStringFromClass([playerArray class]));
或者,请检查:

if ([playerArray isKindOfClass: [NSMutableArray class]])
{
...
}

在运行上面的NSLog之后,类是:u NSArrayI??有人能解释一下这是怎么回事吗?在@interface中,我有“NSMutableArray*playerary;和“@property(非原子,保留)NSMutableArray*playerArray;“。嗯,你是如何实例化它的?看那里。谢谢,我终于解决了这个问题。我调用了一个对象,该对象将NSArray返回给我的NSMutableArray。我是一个非常迟钝的人,但学习速度很快:-)
-isKindOfClass:
不起作用。NSArray和NSMutableArray都是NSFarray的典型实例。@deco只是在最近的版本中才开始工作的。”由于实现的改变。以这种方式区分可变和不可变仍然是一个非常糟糕的设计。显示您在何处创建playerArray。
if ([playerArray isKindOfClass: [NSMutableArray class]])
{
...
}