摆脱ObjectAtIndex可能不会响应警告

时间:2009-08-16 04:16:08

标签: iphone objective-c

我有一个NSMutableArray,我正在从带有字符串的plist初始化。

但是当我尝试在该数组上执行objectAtIndex或removeObjectAtIndex时,我收到警告“NSMutableArray可能无法响应....”并且它也在执行时失败。

我该如何解决这个问题?

THX

2 个答案:

答案 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.