2013-01-22 73 views
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的項目斷點列表使之更好。

+0

你能想到除了你的新代碼已經改變的東西嗎?你的編譯/構建/鏈接工具集中有什麼?你是否仍然可以構建自己製作的其他工作軟件(使用相同的構建選項)? –

+0

大衛,如果你解決了這個問題,你應該提交它作爲你的問題的答案,以防其他人有相同的問題:) –

+0

謝謝,卡爾 - 我昨晚沒有看到答案選項,但那可能是缺乏睡覺。 :) –

回答

0

調試器實際上並不是在抱怨代碼 - 而是斷點:關於無法找到之前放置在那裏的斷點的問題。刪除Xcode的項目斷點列表使之更好。

相關問題