2012-05-01 12 views
3

我正在嘗試構建一個iOS庫/框架,爲了簡單起見,我們將向使用它的項目公開一些類A。現在問題在於類A取決於類B,它不打算在庫的構建輸出中公開(甚至不包括作爲符號)。這會導致問題,因爲有另一個類C的庫,它也碰巧依賴於類BiOS庫/框架,如何從構建產品中排除特定的類?

會發生什麼情況是,如果我嘗試包括項目兩個庫,鏈接器主訴其B類的多個定義。

解決此問題的最佳方法是什麼?在構建兩個庫(或兩個庫中的至少一個)時,是否可以將B類設置爲弱連接?如果是這樣,怎麼辦?

還是應該將類B提取到它自己的庫/框架中,並將這兩個庫修改爲引用該類,而不是將B作爲源文件?

回答

2

我認爲最好的辦法就是讓多個目標在您的項目。最簡單的方法是在XCode左側的文件列表中單擊您的項目文件,右鍵單擊中間窗格中「TARGETS」下的對象,然後選擇複製。然後你可以在一個目標中包含A和C,在另一個目標中包含B和C.你可以單獨編譯它們,它基本上像有兩個項目,除了它們共享公共文件。這聽起來像你想要的?

編輯關於第二個想法,它聽起來並不像它。當你編譯到一個庫時,你的問題正在發生,然後將另一個項目鏈接到它,對吧?

它似乎並不像有一種方法可以有一個編譯庫的內弱鏈接的對象。你可能會被關閉它們分成單獨的庫(這是有點在的this page底部描述的場景發生了什麼)

+0

是,在頁面上討論了這個問題正是我運行到這個問題更好。我有一個內部使用'SBJson'的第三方庫(通過將'SBJson'源文件集成到庫項目/代碼中)和一個內部使用相同的庫。在第三個項目中嘗試鏈接兩個SBJson實例會導致衝突。 – aroth

+0

你有第三方庫的來源嗎? – borrrden

+0

在這種情況下,是的,儘管'SBJson'的受歡迎程度並不總是如此。所以如果碰巧遇到這個問題的一般情況下的解決方案,並不需要自己修改庫項目,我一定會有興趣知道它。 – aroth

相關問題