2011-11-11 198 views
1

我的應用程序崩潰的一個indefined原因,我結束了與此日誌:iOS如何調試崩潰?

的Myproj [9442:707] - [NSDecimalNumber長]:無法識別的選擇發送到實例0x2e6690

我能有什麼信息? 9442:707是什麼意思,它是一個行號?

編輯

在我的代碼,我加入了類似的痕跡:

NSLog(@"KEYS:%@", myKeys); 
NSLog(@"KEYS ORDERED:%@", [myKeys sortedArrayUsingSelector:@selector(compare:)]); 

但第二線崩潰。我所看到的「長度」錯誤似乎來自這一行(儘管我沒有在任何地方使用[長度])。

2011-11-11 14:20:18.936 MyProj[9570:707] KEYS:(
    330, 
    359, 
    362, 
    367, 
    352, 
    351, 
    364, 
    331, 
    350 
) 

... then crash... with above error 
+0

給這個簽出:如何跟蹤和調試的iOS崩潰:http://ios-blog.co.uk/tutorials/how-to-trace-and-debug-an-ios-crash-part -1/ – MarkP

回答

2

iOS調試器在描述確切的問題時有時不太清楚。 但在你的情況下,它應該很清楚。 [NSDecimalNumber length]無法執行,因爲該方法長度我們不清楚。

編號:http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDecimalNumber_Class/Reference/Reference.html

嘗試找到在您使用長度的功能和改變它的東西,做的工作就行了。用你的問題中的一段代碼,我們可以更精確地說明這一點。

+0

我沒有在代碼中使用「長度」,似乎在排序數組時(我已經在問題中添加了部分代碼)進行了鏈接。 – Luc

+0

@Luc:比較:方法。將在長度函數的封面下做些事情。這可能就是這樣。 –

+0

你是對的,在比較方法中調用長度。我剛纔看到比較的對象不是全部是NSString,有一個NSDecimalNumber隱藏在其中......我將它改爲NSString並且工作正常。謝謝你的幫助。 – Luc

2

9442:707是關於過程的信息..它不會幫助你在這裏。

某處在你的代碼,你要發送的長度消息到NSDecimalNumber。

你可以在調試器崩潰發生的呢?如果是這樣,請在崩潰時檢查調用堆棧,並指出您正確地處理問題。

如果沒有 - 如果你的代碼庫不是太大,你可以搜索你的代碼爲「長」和檢查任何地方,你要發送的長度消息,看它是否可以將其發送到錯誤類型的對象。

+0

我設法隔離了這個錯誤,但似乎並不是因爲明確的[長度]調用。我已更新問題並添加了其他日誌。 – Luc