2009-08-16 30 views
1

我有一個NSMutableArray,我從一個plist初始化字符串。擺脫ObjectAtIndex可能不會響應警告

但是當我嘗試在該數組上做objectAtIndex或removeObjectAtIndex時,我收到警告「NSMutableArray可能不會響應....」並且它在執行時也失敗。

我該如何解決這個問題?

THX

+4

請發出確切的代碼行(以及任何前面的上下文行)給出警告。 – 2009-08-16 04:40:18

回答

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])); 

檢查您的應用程序的調試輸出當它到達該行(快捷鍵:命令移-R在Xcode)。另外,我相信你已經知道這一點,但Objective-C中的方法名稱區分大小寫,並且在有參數時在技術上將末尾包含冒號。因此,一個有效的調用是這樣的:

id gottenObject = [x objectAtIndex:0]; 

很抱歉,如果這似乎沒有必要提,但是我想我會在我的答案更全面,萬一你因失誤或使用的東西大寫的O。

1

我猜沒有相關的代碼,但如果您將NSMutableArray存儲到NSArray *變量中,編譯器會根據變量類型使用靜態類型,並假定該對象是NSArray,因此不可變。 (因此,「可能不會響應...」警告。)相反,您可能試圖將NSArray存儲在NSMutableArray *變量中,這也會在運行時導致失敗。沒有背景很難說,但這些都是需要探索的事情。