iOS - 可变阵列问题?

时间:2012-06-20 18:22:32

标签: ios nsmutablearray

我一直有一个非常奇怪的问题。我有一个可变数组声称是可变的并声称响应addObject:,但崩溃说它不可变。

以下是代码:

NSLog(@"Can add object: %d", [[MySingleton sharedInstance].myArray respondsToSelector:@selector(addObject:)]);
if([[MySingleton sharedInstance].myArray isKindOfClass:[NSMutableArray class]])[[MySingleton sharedInstance].myArray addObject:objectToAdd];
else NSLog(@"Not mutable");

现在,如果我将它设置为可变副本,它就可以工作。

NSLog(@"Can add object: %d", [[MySingleton sharedInstance].myArray respondsToSelector:@selector(addObject:)]);
if([[MySingleton sharedInstance].myArray isKindOfClass:[NSMutableArray class]])[[MySingleton sharedInstance].myArray.mutableCopy addObject:objectToAdd];
else NSLog(@"Not mutable");

为什么?为什么它声称是可变的并且能够添加对象:但是崩溃除非我使用可变副本?

1 个答案:

答案 0 :(得分:0)

我希望这会更好一些。也许如果我写得足够多,这将成为现在的正确答案。答案在主要帖子的评论中。我需要检查isMemberOfClass以检查它是否继承了类方法,而不是检查它是否属于某个类类型,因为它是可变的,但没有继承可变方法。