2012-05-02 60 views
1

我在顯示鍵盤時正面臨崩潰。正如蘋果文檔中所建議的,我正在聆聽來自鍵盤的通知,以調整鍵盤覆蓋的文本視圖的位置。在模擬器會議,並在第一次調試會話的應用程序正在運行,僅在第一次時,我就texfield挖掘應用程序崩潰,在控制檯中,我得到這個消息:
僅在第一次運行應用程序時顯示鍵盤時發生崩潰

- [UITextMagnifierCaret keyboardWasShown:]:無法識別的選擇發送到實例0x3ee2e0 2012-05-02 07:17:49.929 XXXX [316:707] *終止應用程序由於未捕獲 異常 'NSInvalidArgumentException',原因: 「 - [UITextMagnifierCaret keyboardWasShown: ]:無法識別的選擇器發送 至實例0x3ee2e0'

這裏有一些線索:

  1. 鍵盤是演出前在另一部分
  2. 崩潰NEVR再次發生,如果它已經發生
  3. 似乎只在SIM卡和設備調試過程中展現出來,但不是在ad-hoc
  4. 我的IOS版本是5.1
  5. UITextMagnifierCaret是不是一個類的應用程序,但我猜是magnigfing類
+1

發現解決方案,我忘記刪除一個對象作爲觀察員在它被釋放之前。所以當Notif發送時,它也發送給殭屍。我無法解釋與UITextMagnifierCaret有什麼關係。事實上,這只是第一次發生的事情是,其他文本字段只顯示第一次訪問應用程序。如果有人想寫一個關於刪除觀察者的重要性的答案,我會接受它。 – Andrea

回答

1

您將某個對象註冊爲觀察者,然後再釋放該對象,但觀察者仍然指向該內存位置。 有關UITextMagnifierCaret的例外情況可能是因爲曾經分配給觀察者的內存位置現在分配給您不管理的UITextMagnifierCaret對象,並且不響應鍵盤通知。

使用ARC可能有助於避免此類問題。一般來說,一定要刪除或刪除任何指向你手動發佈的對象的指針。

相關問題