【问题标题】:iOS - Mutable Array Issue?iOS - 可变数组问题?
【发布时间】:2012-06-20 18:22:31
【问题描述】:

我遇到了一个非常奇怪的问题。我有一个可变数组,它声称是可变的并声称响应 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");

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

【问题讨论】:

标签: ios nsmutablearray


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 2011-09-28
    相关资源
    最近更新 更多