我有一个NSMutableArray,我正在从带有字符串的plist初始化。
但是当我尝试在该数组上执行objectAtIndex或removeObjectAtIndex时,我收到警告“NSMutableArray可能无法响应....”并且它也在执行时失败。
我该如何解决这个问题?
THX
答案 0 :(得分:1)
我猜测没有相关代码,但如果将NSMutableArray存储到NSArray *变量中,编译器会根据变量类型使用静态类型,并假设该对象是NSArray,因此是不可变的。 (因此,“可能不会响应......”警告。)相反,您可能试图将NSArray存储在NSMutableArray *变量中,这也会导致运行时失败。没有语境就很难说,但这些都是值得探讨的事情。
答案 1 :(得分:0)
看起来您拼错了方法名称,或者(更有可能),该对象实际上不是NSMutableArray
。
这是检查类型的一种方法。这只适用于模拟器,但它可能有助于解决您的问题:
#import <objc/runtime.h>
// Later, when you've got the object x that you want to be an NSMutableArray:
NSLog("The type of x is %s", class_getName([x class]));
检查应用程序到达该行时的调试输出(快捷方式:xcode中的命令shift-R)。
另外,我确定你已经知道了这一点,但是Objective-C中的方法名称区分大小写,技术上在有参数的时候包括冒号。所以有效的通话看起来像这样:
id gottenObject = [x objectAtIndex:0];
很抱歉,如果这似乎没有必要提及,但我认为我的答案会更全面,以防万一你错误地使用了资本O.