我有一個NSMutableArray,我從一個plist初始化字符串。擺脫ObjectAtIndex可能不會響應警告
但是當我嘗試在該數組上做objectAtIndex或removeObjectAtIndex時,我收到警告「NSMutableArray可能不會響應....」並且它在執行時也失敗。
我該如何解決這個問題?
THX
我有一個NSMutableArray,我從一個plist初始化字符串。擺脫ObjectAtIndex可能不會響應警告
但是當我嘗試在該數組上做objectAtIndex或removeObjectAtIndex時,我收到警告「NSMutableArray可能不會響應....」並且它在執行時也失敗。
我該如何解決這個問題?
THX
它看起來像你要麼拼寫錯誤的方法名,或者(更可能),對象是不實際的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。
我猜沒有相關的代碼,但如果您將NSMutableArray存儲到NSArray *變量中,編譯器會根據變量類型使用靜態類型,並假定該對象是NSArray,因此不可變。 (因此,「可能不會響應...」警告。)相反,您可能試圖將NSArray存儲在NSMutableArray *變量中,這也會在運行時導致失敗。沒有背景很難說,但這些都是需要探索的事情。
請發出確切的代碼行(以及任何前面的上下文行)給出警告。 – 2009-08-16 04:40:18