2010-03-26 59 views

回答

13

之間的主要區別在它的心臟是什麼就是什麼,一個OS X框架的動態鏈接庫。框架是一個名爲「框架包」的special directory structure,其中包含動態鏈接庫的一個或多個版本以及從屬框架,資源,元數據等。OS X上的其他「捆綁包」包括.app捆綁包(其中包含可執行文件以及資源,依賴框架等)。

8

動態庫是一個基本的概念,大部分都是獨立於特定平臺的,也就是說你可以在OSX,Linux,Windows上討論動態庫,並且意味着相同的基本事物 - 一段帶有導出API符號的可重定位對象代碼以允許它被平臺上的應用程序按需加載和共享的方式。

框架是一個OSX特定的術語。它是一個包,它定義了一些普遍認同的目錄結構,並將動態庫,資源,包的描述和其他相關內容存儲在預定位置。這意味着它主要具有語義這意味着它允許開發人員(以及他們創建的工具)以通常理解的方式引用它。值得注意的是,框架根本不需要包含共享庫。

+0

但是當我們說共享庫時,這意味着同時運行的多個應用程序可以共享該單個庫嗎?因此,假設動態庫中存在全局變量,訪問該變量的應用程序將擁有自己的實例,這可能如何呢?我感到困惑。 – PrithviRaj 2010-03-26 06:32:24

+3

@prithviraj - 跨應用程序共享庫代碼的操作系統共享代碼段。數據段通常作爲「寫入時複製」加載,這意味着加載了單個副本,並且任何永遠不會更改的代碼都會共享該副本。只要在庫的數據段中進行了更改,那些頁面就會複製到應用程序的本地內存空間中,同時仍共享只讀代碼頁。 – 2010-03-26 06:52:13

2

Anatomy of a Framework可能是有用的。具體來說,該例中提到的Versions/Current/MyFramework是共享庫。該部分繼續描述框架包中可能存在的其他一些內容。