0
我使用的代碼已在其他幾個項目中使用,沒有發生意外。突然間,我在使用相同的代碼時得到了隨機錯誤消息 - 但只在一個特定的項目中。自發的「NSCFString encodeBytes:length:forKey:無法識別的選擇器」例外
此代碼已在其他幾個項目完全運行:
@implementation MyClass
static NSMutableDictionary *elements;
+(void) initialize {
if (!elements)
elements = [NSMutableDictionary new];
}
+(void) MyFunction: (some parameters) {
NSString *class_name = NSStringFromClass([self class]);
NSMutableArray *elementList = [elements valueForKey: class_name];
}
的某些變化,而現在的[元件valueForKey:]調用產生以下錯誤消息:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: NSCFString encodeBytes:length:forKey: unrecognized selector sent to instance
它實際上得到怪異比起那個來說。如果我通過+(void)初始化,我發現元素開始時爲nil,然後按照預期設置爲NSMutableDictionary。但是,即使在創建該實例之後,對[元素valueForKey:[any NSString]]的任何調用都會導致出現與「NSCFString encodeBytes」相同的錯誤,該錯誤不是可識別的選擇器。 (編輯/已解決):調試器實際上並不是在抱怨代碼 - 而是斷點:關於不能找到以前放在那裏的斷點的東西。刪除Xcode的項目斷點列表使之更好。
你能想到除了你的新代碼已經改變的東西嗎?你的編譯/構建/鏈接工具集中有什麼?你是否仍然可以構建自己製作的其他工作軟件(使用相同的構建選項)? –
大衛,如果你解決了這個問題,你應該提交它作爲你的問題的答案,以防其他人有相同的問題:) –
謝謝,卡爾 - 我昨晚沒有看到答案選項,但那可能是缺乏睡覺。 :) –