日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS开发里的Bundle是个啥玩意?!

發布時間:2025/4/5 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS开发里的Bundle是个啥玩意?! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

初學iOS開發的同學,不管是自己寫的,還是粘貼的代碼,或多或少都寫過下面的代碼

??

[[NSBundle?mainBundle]?pathForResource:@"someFileName"?ofType:@"yourFileExtension"];?

[YourViewController?initWithNibName:"YourViewController"?bundle:nil];

?

可是你知道這里的bundle到底是個啥玩意呢?!

Bundle簡單地講,就是一個內部結構按照標準規則組織的特殊目錄


?

iOS的應用都是通過bundle進行封裝的,對應的bundle類型是Application類型,平時我們通過XCode編譯出來的Target(即我們開發的應用),其實就是一個Application類型bundle,即一個文件夾!但是Finder會把這個bundle當做一個文件顯示給我們,其實是因為這個bundle自身也是一個package,而Mac系統會把所有的package當做一個文件來對待,顯示給用戶,從而防止用戶誤操作導致程序文件損壞或丟失。至于bundle和package有什么區別,就不在這里展開說明了,本文后面所說的bundle都會被Mac系統視為package。

?

現在我們已經知道了,原來我們開發的應用程序,最后都會成為一個bundle,那么就不難理解為什么很多資源文件加載大多是通過bundle來進行的了,從bundle進行文件加載實際就是通過應用自己所在的文件夾進行加載。

?

不過緊接著我們又會產生好幾個疑問:

1 為什么不直接使用文件路徑的方式來讀取資源文件呢?

2 為什么還會存在pathForResource:ofType:這個方法,難道說我們在開發的時候還不能確定這些文件在哪兒嗎?



事實上,我們是可以使用文件系統的路徑進行資源文件的訪問的,不過當我們要進行App的國際化的時候,我們需要自己去實現不同語言、地區情況下加載對應的文件,而在部分資源文件公用,部分需要國際化的時候,對開發人員來講,代碼維護起來尤為混亂。

而bundle對iOS開發者來講,最大的方便就是可以非常簡單地讓自己的應用國際化,在不同的語言不同的地區,加載不同的資源文件,顯示不同的語言文字,而實現這些只需要我們嚴格按照bundle的要求進行資源文件的存放即可,而不需要寫大量代碼判斷地區語言。遵循的方法也很簡單,只需要我們創建對應的"本地化文件夾"即可,例如我們要同時讓圖片"pic.png"在中文和英文下顯示不同的內容,只需要創建兩個本地化文件夾zh.lproj和en.lproj,分別放入同名但內容不同的"pic.png"即可。

?

關于如何讓自己的應用國際化的具體方法,將在之后的文章進行描述。?

?


轉載于:https://www.cnblogs.com/BigPolarBear/archive/2012/03/28/2421802.html

總結

以上是生活随笔為你收集整理的iOS开发里的Bundle是个啥玩意?!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。