2013-08-30 55 views
3

首先我想說我對這個主題很新,所以我對它的工作方式的一些一般方面有些困惑。 基本上我正在開發一個iOS項目,它有兩個目標,一個是我正在開發的應用程序本身,它是一個前端iOS客戶端,一個是前開發人員用來定義屬於一個後端框架。作爲子項目添加的靜態庫vs作爲目標添加的靜態庫

應用程序本身(我正在處理的客戶端)和靜態庫(後端框架)的文件都在同一個xcode項目包中。 即使我從來沒有做過靜態庫的「設置過程」,任何東西在編譯時似乎都能正常工作。

現在的問題是:我正在設置單元測試,因爲我想開始開發採用測試驅動開發方法的新功能,所以我一直在努力的事情之一是如果我必須生成或不生成兩個獨立的測試目標,一個用於iOS應用程序,一個用於靜態庫(因爲它們是兩個獨立的目標),礦石對靜態庫和iOS應用程序都使用一個測試目標。 因此,閱讀互聯網尋找解決方案,我發現,即使蘋果建議here,一種常見的方法是將靜態庫添加爲應用程序項目的「子項目」。

我只是問自己爲什麼和我目前的情況有什麼不同(一個項目,目標,其中之一是靜態庫)。有什麼缺點嗎?我應該重組整個項目嗎?

回答

1

我的經驗與蘋果公司和常見方法一致。我建議把框架作爲一個子項目。 (我在查找標題時遇到了一些問題,但這是我對Xcode的掌握不足,而不是這個過程中的缺陷。)

獨立設置每個項目的單元測試。通過這種方式,您的測試對框架的目標是真實的:您已經成功地將框架從父項目中分離出來了。

如果你在父項目中編寫所有的單元測試,當另一個項目需要框架時會發生什麼?你有兩個選擇。您無法測試框架,或者沿着原始父級測試字符串。做正確的事情並分解你的測試。

我有一個我建立的開源框架,名爲SpiffyKit,它有一個名爲SpiffyTester的父項目。 (我承認沒有單元測試太多,因爲這全都是用戶界面,沒有邏輯。)它可以作爲一個起點的好例子。

+0

好吧,我同意你的解耦問題,但我的問題點有點不同,我想知道爲什麼與一個子項目的解耦,而不是與不同的目標,每個與不同的文件鏈接的目標。 我想知道爲什麼一個比另一個更好,因爲我發現通過一個子項目添加一些東西有點棘手,它只是一個概念性的東西,例如:「你可能希望將該庫添加到另一個項目中,所以它應該生活在一個單獨的項目中「或者還有其他與我不是軟件包的維護和分發過程相關的問題? –

+0

我認爲這兩個都是有效的原因。您可能需要將該庫添加到另一個項目中,或者您可能希望共享該庫而不共享其餘代碼。 Cocoa項目的原子單元是Xcode項目。出於所有提到的理由,堅持該單位是一個好主意。 – Moshe

-2

根據您的需求,您可以使用Pods,靜態或將其添加到項目中。如果您在一次處理2個項目時將庫添加爲「子項目」非常有用。例如,如果您向庫中添加了新的東西,那麼您只需編譯該庫,並且您可以訪問項目中的新庫。但是,如果你只是鏈接靜態庫,你將不得不打開庫的項目,然後建立,然後在庫中替換它,並添加新的頭文件是很多安裝工作。

+0

CocoaPods在這裏不合適。 – Moshe

+0

既然他在問這個問題,我認爲他應該知道所有的方法來爲項目添加庫/代碼,從而獲得額外的知識,並且有一點從來沒有人想過。 – Radu

+0

我已經知道可可豆莢了,有時候我在一些項目中使用過它,但情況並非如此。這會增加額外的複雜性,我將添加到我的項目sonsists的庫中,我們仍在編寫代碼並經常更新,代碼應該已經準備好並且可以編輯,我們應該能夠快速測試它。 –

相關問題