2015-10-13 91 views
0

我在寫一個具有表單的應用程序,並允許您將表單數據通過電子郵件發送到計算機進行進一步編輯。該表單使用UITextfield的實現,並且假設您沒有輸入「輸入/返回」鍵時正確運行。如果出現這種情況,應用程序崩潰的模擬器,或凍結在我的iPad,並且給了我下面的消息輸出:iOS UITextfield:按下輸入/返回鍵時崩潰

[FirstTableViewController hideKeyboard:]: unrecognized selector sent to instance 0x151cb800 

的hideKeyboard方法,任何地方都不會在我的代碼存在。我現在還不確定發佈代碼是否有用,因爲我不知道代碼在哪裏發生。我試圖創建一個異常斷點,但它似乎沒有提供應用程序崩潰的信息。

如果我能得到一些關於如何更好地調試我的代碼的提示,那會很棒。如果我找到了發現錯誤的地方,並且無法自己弄清楚,我會用所需的代碼更新這篇文章。

謝謝。

+0

「無法識別的選擇發送到實例」是一個衆所周知的問題的方法。你有什麼嘗試?有很多關於它爲什麼會發生的問題,以及如何找到它。你有一個名爲「hideKeyboard:」的方法嗎? – Larme

+0

定義的'hideKeyboard'方法是什麼對象? 「無法識別的選擇器」意味着您正在調用方法'hideKeyboard'的對象沒有匹配該名稱的方法。當你在一個你不想要的對象上調用方法時,通常會發生這個問題。 – atreat

+0

我有點迷路,因爲我沒有hideKeyboard方法。我不知道任何其他方式來確定什麼是錯的,除非我找到它在我的代碼崩潰的地方。我甚至在我的代碼上進行了cmd查找,並找不到任何此類方法。 – Malexc

回答

2

調試這種情況的好方法是將報告的無法識別的選擇器添加到正在調用的類中。如果它是一個庫類,它的子類,只是添加有問題的單個選擇器。

然後在實現中放置一個斷點,並在達到斷點時查看後面的跡線。

+0

我不確定我是否理解。在我原來的文章中我忘記提到的是hideKeyboard方法在我的代碼中不存在。 – Malexc

+0

是的 - 這就是爲什麼你的應用程序崩潰。所以添加它,看看是誰在呼叫它。 – 2015-10-18 05:18:02

0

最有可能你增加了一個選擇器的事件:

self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone 
                          target:self 
                          action:@selector(hideKeyBoards)] autorelease]; 

卻忘了自己實施