2011-10-11 58 views
0

我有兩個項目共享相當一部分邏輯,本地化,屬性甚至視圖(Logindialog,Popovers等)。我現在想把相交集合放入一個新的項目中,這個項目應該用作某種通用庫。如何使用項目作爲公共代碼庫

我想保持共同的項目作爲一個git子模塊在我的其他項目:

Project A 
- Classes 
- Resources 
- CommonLibrary (git submodule) 

Project B 
- Classes 
- Resources 
- SomeBSpecificFolder 
- CommonLibrary (git submodule) 

的CommonLibrary現在大概也有它自己的Xcode項目。我不知道現在應該如何解決這個問題。我知道以下選項:

  1. 使用庫(。一個文件和.h文件)

    TestFlight例如是否這樣。我非常喜歡這樣一個事實,即我可以針對二進制文件進行編譯,而不會「看到」源代碼。所以只需要一個乾淨的API來處理事情。

  2. 包括整個項目(項目依賴性)

    Three20不會像這樣,我覺得很討厭有一些6個子項目在我的項目。但在我的情況下,它只會是一個項目,所以這也可能是一個選項。

  3. 只需在CommonLibrary文件夾內有鬆散的源文件,並將其手動添加到兩個項目中。然後該項目將編譯源和任何項目特定的源。這看起來很像我的一個解決方法,我想我寧願以某種方式捆綁常見的來源。此外,如果有新文件,我總是必須將它們添加到其他項目。

你們可以給我一些建議,並告訴我,如果有另一種選擇,或者你認爲這些方法的優點和缺點?

非常感謝您的幫助!

回答

3

從清晰的非應用程序特定的角度來看,您應該期待創建一個庫/框架。這提供了:

  • 的可重用性,你想
  • 沒有延長建立相關的項目的時候,
  • 同時保持代碼庫(可維護性)的一致性,
  • 保持你的API一致的跨使用項目和
  • 管理層之間的依賴關係

就Xcode而言,如果我從我的Ope中正確地記得nStep的日子,你應該看到創建一個新的框架項目,將提供該類型的項目相關的生成文件。生產的粗略衝浪:

http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPFrameworks/Tasks/CreatingFrameworks.html

和稍微友好:

http://atastypixel.com/blog/creating-applications-in-xcode-using-frameworks/

此外,你可能真的要疊加的框架,以進一步提高可重用性。也就是說,不要只創建一個框架,每層創建一個框架:將框架中的通用代碼放入框架,基於UI/AppKit的類中,等等。這樣,您的框架與任何現場使用您的課程和項目。例如,如果您在某個基礎類上有一個類別,請將其放入一個公共/基礎框架中,該框架可以由您構建的任何其他常見/基礎類和項目重用。如果要將它放入具有UI庫和依賴項的UI層框架中,那麼它不能被基礎級項目重用(因爲它們不能具有UI級別的依賴項)。

希望這有助於...

+0

好東西謝謝! – Besi

+0

嗯......我想要糾正,但是如果你製作自己的框架(即私人框架),不要期望蘋果批准你的應用程序在應用程序商店出售,至於我所知,私人框架仍然是過時的。即,如果它不是您的應用程序中的源代碼或Apple提供的框架,則無法在您的應用程序中使用它。 – unsynchronized

0

我發現了一個在github上稱爲RestKit項目,這似乎是一個第三方的框架,它可以包含在現有項目中一個很好的例子。

自述文件和wiki describe nicely需要完成哪些步驟才能包含該項目。我想這對於想自己創建框架的人來說是一個很好的起點。

相關問題