IOS NSBundle 的理解和 mainBundle 類方法詳解


常看到類似的

 NSString *file = [[NSBundle mainBundle] pathForResource:name ofType:nil];

這樣的代碼,用來獲取 file 的完全路徑。

那么它是什么東西呢:先看 NSBundle 類,直接繼承NSObject類。

這個類的對象,代表了 app 中代碼和資源的文件在文件系統里所在的位置,通俗的說,就是定位了程序使用的資源(代碼,圖形,音樂等數據)在文件系統里的位置,並可以動態的加載、or卸載掉可執行代碼。

我們的程序是一個bundle. 在Finder中,一個應用程序看上去和其他文件沒有什么區別. 但是實際上它是一個包含了nib文件,編譯代碼,以及其他資源的目錄. 我們把這個目錄叫做程序的main bundle,在 xcode 里,使用應用程序、框架、or 插件的時候,xcode 會生成對應的資源的目錄包。

 

類方法:

mainBundle 方法詳解

+ (NSBundle *)mainBundle

返回一個 NSBundle類的對象,這個對象就是一個完全path,這個 path 保存的當前可執行的app路徑,或者是 返回nil。app ,Build之后, 資源文件直接就復制到了根目錄下,於是讀取的方法,應該是這樣:

NSString *earth = [[NSBundle mainBundle] pathForResource:@"Brad Cox" ofType:@"png"];

編譯之后,mainBundle的資源都是放到RootFolder下,所以,可以直接訪問,不要指定內部路徑。通常來說,這個 mainbundle 就是 當前的可執行app 的在根目錄下的絕對路徑,

也就是:

finder根目錄開始的路徑+app 的name+.app 后綴。而資源就直接訪問,都在 app 的包里。比如;

/Users/dashuai/Library/Application Support/iPhone Simulator/9.1/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2/tomcat.app/drink.png

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM