簡體   English   中英

針對App和測試目標的鏈接框架

[英]Link framework against App and Test Target

我有一個我在普通App目標中使用的自定義框架以及相應的UnitTest目標。 事實證明,混淆運行時的方式是它無法選擇正確的實現,因為它有多個選擇:

objc[35580]: Class AClass is implemented in both ../MyApp.app/MyApp and ../MyApp.app/MyAppTests. One of the two will be used. Which one is undefined.

如果您嘗試檢查對象的類層次結構或執行任何其他類相關檢查,那當然會導致奇怪的行為。

所以歸結為以下兩個問題:

  1. 我沒有看到例如UIKit組件的類似日志,但是這個框架也鏈接到兩個目標。 我是否錯誤地編譯了框架?
  2. 這只是我錯過的一個微不足道的配置問題嗎?

PS:我已經檢查了類似12的類似帖子,但是雖然所有內容都按照描述配置,但問題仍然存在。

我認為捆綁包應該只“讀取”框架的頭文件,但不構建源並將該任務留給App(從UnitTest目標中刪除Framework .m文件)。

現在,App和UnitTest都在構建Framework,因此構建了重復的類。

您已將依賴關系框架添加到測試目標。 這是有缺陷的思想。 由於您的主應用程序也導出SAME框架,因此您將收到有關框架中找到的任何類的重復符號的警告。

通過從測試目標中刪除框架,您可以解決警告。 請記住,通過不鏈接測試目標中的相同框架,您不會丟失任何功能。 相信我,你的代碼仍在那里。

我在這里遇到了類似的問題: Xcode5:創建新的測試目標

關鍵是創建一個新的單元測試包,將其指向原始目標,然后不做任何其他事情! 如果您開始將框架和源文件包含到測試目標中,它將生成這些鏈接錯誤。 測試目標應該將測試類“注入”到實際目標中,而不是自己創建一個新的單獨目標。 因此,您只需要在測試類中導入頭文件,然后編寫測試用例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM