2010-06-17 48 views
2

我開發一個應用程序與SDK 3.1.2,並在模擬器中運行,但是當我嘗試它在設備上部署它出現日以下錯誤部署應用設備時:錯誤iphone

2010-06-17 17:40:39.592 MyApp[2143:207] *** -[__NSCFDate dateInformation]: unrecognized selector sent to instance 0x21e6a0 
2010-06-17 17:40:39.608 MyApp[2143:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSCFDate dateInformation]: 

爲什麼這不會發生在模擬器上?

回答

2

可可或Cocoa Touch中沒有任何方法叫做dateInformation。所以,它聽起來就像你有下列之一:

  1. 上NSDate的一個類別,提供dateInformation,但沒有被編譯到您的設備建立(可能的,但不太可能)
  2. 上的一些方法其他對象不是NSDate,但確實有一個dateInformation方法。但是,如果您的其他對象被釋放,那麼以前由對象佔用的內存可能會被循環使用以便與NSDate一起使用。 (更有可能)您可以在程序環境中使用設置爲YESNSZombieEnabled(或使用殭屍工具)運行來進行調試。
+0

但是在我的代碼中沒有地方會調用這個名字的方法。爲什麼在模擬器中不會發生這種情況?不應該是一樣的嗎? – Rafael 2010-06-17 15:53:58

+0

@Rafael不,模擬器和設備之間的差異在其他地方有很好的記錄。從Xcode的運行菜單中,選擇「在Objective-C異常中停止」並重新運行。當它遇到錯誤時,它會停下來,你將能夠看到錯誤的起源。 – 2010-06-17 15:57:17

+0

非常感謝你的幫助。它恰好是這種情況1.我正在使用實現dateInformation的庫......它沒有在設備中正確構建,因爲我忘記在庫中所需的構建中添加一個標誌......唯一的我不明白爲什麼這不會導致模擬器的問題...我需要更多地瞭解它... – Rafael 2010-06-17 21:28:16