2009-10-10 104 views
0

我有一個庫,我現在想在應用程序中使用它。我相信我已經正確地與圖書館聯繫在一起了。這裏是所有我做過的事情:iPhone:在應用程序中使用靜態庫崩潰設備,但不是iPhone模擬器

  • 設置標題搜索路徑
  • 設置其他連接標誌爲「-ObjC」
  • 添加靜態庫的Xcode項目
  • 確信的lib。一個被列爲框架目標
  • 增加了庫作爲直接依賴

就像我在標題中說,我已經成功與靜態裏運行應用程序在模擬器中進行模擬。有一次,我嘗試使用該設備測試程序,它崩潰它有使用功能的庫中的第二個:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSDate firstOfCurrentMonth]: unrecognized selector sent to class 0x3841bb44' 
2009-10-10 12:45:31.159 Basement[2372:207] Stack: 

回答

2

這是由於在當前的SDK鏈接器的錯誤。有關該問題和可能的解決方法的更多信息,請參閱this post。 (見this post

更新:

你可以嘗試的另一件事是去除靜態庫和應用程序的項目直接包括庫的源文件。我正面臨着一個類似的靜態庫鏈接問題,這就是我最終爲了讓它成功運行而退縮的原因。如果這有效(但可能是一種解決方法),那肯定是一個鏈接器問題。

+0

我試過了,它似乎沒有幫助...我將它添加到應用程序,然後添加到庫。 – devinross 2009-10-10 17:03:37

+1

作爲第二個鏈接說明,你可能需要添加「-all_load」選項其它鏈接器標記您的構建設置,從您的靜態庫獲取類別中正確地連接。這是iPhone OS 3.0 SDK的一個已知問題。 – 2009-10-10 23:29:43

0

我最近遇到這個問題。當我注意到另一個類別的DID工作時,我無法使-all_load工作。我對這個類別很懶,並且把它與另一個文件一起包含進來。

我最終創建了一個虛擬類(沒有方法,實例變量),並在該虛擬類的.m文件中包含了我的類別的實現。做完這些後,即使刪除了-all_load標誌,我的類別也開始工作。

這是在iPhone OS 3.1.3上。

這當然不是解決它的正確方法,但它似乎工作。

完整示例代碼位於我的blog上,適用於我的(微不足道的)類別。

相關問題