【发布时间】: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");
这是为什么呢?为什么它声称是可变的并且能够添加对象:但除非我使用可变副本,否则它会崩溃?
【问题讨论】:
-
哦。出于某种原因,我有两个倒退。我认为 isMemberOfClass 是不安全的。我只想知道为什么它说它响应选择器。那不是仅用于实例化,而不是类的类型吗?
-
或者我必须用户实例RespondToSelector:?
-
好吧,Gendolkari 发布了正确的回复:stackoverflow.com/questions/1096772/…
标签: ios nsmutablearray