NSBundle 的理解和 mainBundle 類方法詳解,nsbundlemainbundle

來源:互聯網
上載者:User

NSBundle 的理解和 mainBundle 類方法詳解,nsbundlemainbundle

常看到類似的

 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/5.1/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2/tomcat.app/drink.png

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.