bundle簡介

bundle是就文件系統中一個資源包,其中包含可執行代碼和相關資源.在iOS 和 OX S 中, application,frameworks,plug-ins和其他類型軟件都是以bundle形式存在.

application是唯一第三方開發人員可以創建的bundle.

bundle使得蘋果系統中的應用和軟件很容易安裝和遷移,只需把bundle從一臺電腦復制到另一臺即可, bundle也是國際化的一個重要因素. 把本地化資源存在存儲在bundle中的特別命名的子目錄中,在設備查詢定位資源時會優先用戶相對應的語言選項.

bundle的結構和內容

一個bundle可以包含可執行代碼,圖片,聲音,nib文件,私有框架和libraries,插件,可加載的bundles或其他任何類型的代碼或資源.它還包含了一個運行時配置文件 info.plist; 目錄存儲結構如下:

B8D35F93-AD40-4D0D-9F25-3150B69642B2.png

lproj擴展文件對應不同語言和地區.Resources文件存放資源.

bundle資源的訪問

每個應用程序都有一個main bundle,這其中就包含了應用程序的代碼. 當應用啟動時,會先在main bundle中尋找代碼和資源包,如果有,那么就立刻加載到內存中. 之后,應用程序可以動態的從main bundle或子 bundel 中加載需要的代碼和資源包.

你的應用程序通過Core Foundation的NSBundle和CFBundleRef opaque type的方法來定位bundle中的資源. 在Object-C中,你必須先獲得NSBundle類對應的物理bundle對象. 即調用mainBundle方法或其他根據特定文件名,目錄,或擴展文件返回bundle資源路徑的方法. 當你得到資源路徑后,即可使用合適的類加載到內存中.

loadable bundle

作為應用程序的bundle, 可執行代碼和相關資源都是默認加載的. 但是如果你想顯式的在運行時 加載這些bundle.你可以使用 loadable bundle 來設計高度模塊化的應用程序,方便定制和擴展.每一個 loadable bundle都有一個作為入口的主類, 當你要加載這個bundle時, 你必須由NSbundle 獲取到主類并據此創建一個對象.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 框架捆綁 框架是封裝動態共享庫和支持該庫所需的資源文件的分層目錄。框架比典型的動態共享庫提供了一些優勢,因為它們為...
    nicedayCoco閱讀 1,655評論 0 2
  • 介紹 捆綁是macOS和iOS中用于封裝代碼和資源的基礎技術。軟件包通過為所需資源提供已知位置來簡化開發人員體驗,...
    nicedayCoco閱讀 1,275評論 0 1
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,288評論 25 708
  • ``` public class MailU { public static void sendMail(Stri...
    尼爾君閱讀 260評論 0 0