初學ios開發的同學,不管是自己寫的,還是貼上的**,或多或少都寫過下面的**
[[nsbundle mainbundle] pathforresource:@"somefilename" oftype:@"yourfileextension"];
[yourviewcontroller initwithnibname:"yourviewcontroller" bundle:nil];
可是你知道這裡的bundle到底是個啥玩意呢?!
bundle簡單地講,就是乙個內部結構按照標準規則組織的特殊目錄
檔案顯示給我們,其實是因為這個bundle自身也是乙個package,而mac系統會把所有的package當做乙個檔案來對待,顯示給使用者,從而防
止使用者誤操作導致程式檔案損壞或丟失。至於bundle和package有什麼區別,就不在這裡展開說明了,本文後面所說的bundle都會被mac系統
視為package。
現在我們已經知道了,原來我們開發的應用程式,最後都會成為乙個bundle,那麼就不難理解為什麼很多資源檔案載入大多是通過bundle來進行的了,從bundle進行檔案載入實際就是通過應用自己所在的資料夾進行載入。
不過緊接著我們又會產生好幾個疑問:
1 為什麼不直接使用檔案路徑的方式來讀取資源檔案呢?
2 為什麼還會存在pathforresource:oftype:這個方法,難道說我們在開發的時候還不能確定這些檔案在哪兒嗎?
而bundle對ios開發者來講,最大的方便就是可以非常簡單地讓自己的應用國際化,在不同的語言不同的地區,載入不同的資源檔案,顯示不同的語
言文字,而實現這些只需要我們嚴格按照bundle的要求進行資源檔案的存放即可,而不需要寫大量**判斷地區語言。遵循的方法也很簡單,只需要我們建立
對應的"本地化資料夾"即可,例如我們要同時讓"pic.png"在中文和英文下顯示不同的內容,只需要建立兩個本地化資料夾zh.lproj和
en.lproj,分別放入同名但內容不同的"pic.png"即可。
關於如何讓自己的應用國際化的具體方法,將在之後的文章進行描述。
iOS開發裡的Bundle是個啥玩意?!
初學ios開發的同學,不管是自己寫的,還是貼上的 或多或少都寫過下面的 nsbundle mainbundle pathforresource somefilename oftype yourfileextension yourviewcontroller initwithnibname yourv...
iOS開發裡的Bundle是個啥玩意?!
初學ios開發的同學,不管是自己寫的,還是貼上的 或多或少都寫過下面的 nsbundle mainbundle pathforresource somefilename oftype yourfileextension yourviewcontroller initwithnibname yourv...
iOS開發裡的Bundle是個啥玩意?!
初學ios開發的同學,不管是自己寫的,還是貼上的 或多或少都寫過下面的 nsbundle mainbundle pathforresource somefilename oftype yourfileextension yourviewcontroller initwithnibname yourv...