2011-05-24 62 views
3

我瞭解非iOS目標,使用共享庫可以降低內存使用量,並且還有一些公司分發庫和頭文件(如Superpin),而靜態庫允許它們不分發其產品源。但除此之外,你想使用靜態庫的原因是什麼?我爲我的所有項目使用git,並且通常將外部庫(開源源代碼庫)作爲子模塊添加。這意味着它們會在本地佔用磁盤空間,但它們並不會干擾回購。另外由於iOS不支持共享庫,構建庫以促進代碼重用的好處似乎減少了。爲什麼我要使用靜態庫?

基本上,除了銷售封閉的源代碼庫之外,是否有任何理由可以爲iOS構建/使用靜態庫?

回答

1

組織,重用和輕鬆集成到其他程序。

如果您有一個庫被多個應用程序使用或定位到多個平臺,那麼您將不得不維護每個應用程序的構建。通過一個庫,你讓圖書館維護人員正確設置了構建,然後你只需鏈接到結果(如果它是在內部開發的,那麼你也需要將它作爲依賴項添加)。

這就像DRY,但對於項目。

隨着項目變得越來越複雜,圖書館變得越來越有用。您應該嘗試確定哪些程序(函數,類層次結構等)可以在應用程序的上下文之外重用,並將其放入庫中以便於重用 - 例如模式識別。

一旦你的代碼庫有數百或數千個文件,你會希望儘量減少你使用的內容,並且你不想爲每個項目手動維護依賴項。

0

靜態庫允許您擁有真正的獨立可執行文件。由於所有庫代碼實際上都存在於可執行文件中,因此不必擔心exec執行失敗,因爲某些庫的版本太舊,或者是新版本,或者是完全缺失,等等。 。你不必擔心你的應用會因爲某個庫被替換而突然中斷。它減少了依賴關係,讓你的應用程序更加封裝。

+1

您的答案一般是正確的,但不適用於iOS,因爲iOS不支持第三方動態庫。也就是說,開發工具不支持構建動態庫。 – ThomasW 2011-05-25 01:13:28

0

此外,由於iOS不支持共享 庫,建設 庫,以促進代碼重用的好處似乎 減少。

沒有理由不能構建自己的靜態庫以跨多個項目使用。 除了這個目的和你提到的那些,我不認爲還有其他的。

+0

主要好處似乎是您將在父項目中共享的非常大的子項目,以便大型項目只能構建一次? – 2011-05-24 18:30:54

相關問題