[Cocoa]深入淺出 Cocoa 之 Framework羅朝輝(http://blog.csdn.net/kesalin/)CC許可,轉載請註明出處
Framework 簡介
Mac OS X 擴充了 framework 的功能,讓我們能夠利用它來共用代碼和資源。framework 在概念上有點像 Window 下的庫,但是比庫更加強大,通過 framework 我們可以共用所有形式的資源,如動態共用程式庫,nib 檔,映像字元資源以及文檔等。系統會在需要的時候將 framework 載入記憶體中,多個應用程式可以同時使用同一個 framework,而記憶體中的拷貝只有一份。一個 framework 同時也是一個 bundle,我們可以在 finder 裡瀏覽其內容,也可以在代碼中通過 NSBundle 訪問它。利用 framework 我們可以實現動態或靜態庫的功能。與動態/靜態庫相比,framework 有如下優勢:
第一,framework 能將不同類型的資源打包在一起,使之易於安裝,卸載與定位;
第二,framework 能夠進行版本管理,這使得 framework 能不斷更新並向後相容;
第三,在同一時間,即使有多個應用程式使用同一 framework,但在記憶體中只有一份 framework 唯讀資源的拷貝,這減少了對記憶體的佔用
Framework 的結構
下面是一個帶有A,B兩個版本和一個 resources 目錄的 framework 結構,並設定目前的版本為 B:
結合上面的結構,下面我們來看本例中 ExampleFramework 的結構圖:
Framework 存放位置
在 Mac OS 中有三個層級的位置來存放 framework。一般我們自己編寫的 framework 都應該是應用程式層級。
1,系統級,/Library/Frameworks,放置到該層級,這需要管理員權限,整個系統都可以共用使用該層級的 framework;
2,使用者級,/Users/使用者名稱/Library/Frameworks,擁有使用者權限的應用程式都可以共用使用該層級的 framework;
3,應用程式級。
在應用程式中內嵌 Framework
1,建立 Framework
建立一個名為 FrameworkDemo 的 Cocoa application 工程,然後選中項目名,向其中添加名為 ExampleFramework 的 Cocoa Framework。