[iOS] NSBundle

翻譯來源:蘋果官方文件。

一個NSbundle物件表示檔案系統中的一個位置,檔案系統分類了可供程式使用的code和resources。NsBundle物件定位了程式resources,動態的下載或移除可執行的code,並且協助局域化。你在Xcode中使用以下的project types去建立一個bundle:Application、Framework和plug-ins。雖然bundle structure隨著目標模板(plateform)和你建立的bundle的類型而改變,NSBundle類隱藏幾乎所有但又非全部的基本的結構。許多你用來由bundle下載resources的方法自動定位適當的開始目錄並且在已知的地方尋找resources。關於application bindle structure的資訊(Mac OS X和iOS的)可以看Bundle Programming Guide。若是要看framework bundles的結構,可以看Framework Programming Guide。若是要看Mac OS X plug-ins的資訊可以看Code Loading Programming Topics

額外的關於如何在一個Mac OS X應用程式中下載nib檔案和圖片,可以看NSBundle Additions Reference。關於如何在一個iOS應用程式中下載可以看NSBundle UIKit Additions Reference。不像其它一些對應到Core Foundation名稱的Foundation類(像是NSString和CFString),NSBundle物件不能被toll-free bridged到CFBundle引用。如果你需要功能性地以CFBundle來提供,你仍能創建一個CFBundle並使用CFBundle Reference API。



註:toll-free bridged是說,Core Foundation是C,而Foundation是物件C,而這兩者之間的轉換方法就叫做toll-free bridged,就是直接轉換,例如,CFStringRef和NSString *:

CFStringRef cfString = XXX;
NSString *nsString = (NSString *) cfString;

這樣就能直接用nsString作為cfString了。

或可以參考Interchangeable Data Types去看更多有關toll-free bridging的資訊。

留言