這是framework內部的資源,跟其他都沒有關係。但是framework不能單獨存在,必須要放在某個「主程式」中才能起作用。bundle引數如果不傳,那麼預設是mainbundle,這種情況路徑就不對了。這種情況下,可以用下面這個api來獲得bundle引數。
+ (nsbundle *)bundleforclass:(class)aclass
;
// 獲取bundle引數
nsbundle *bundle = [nsbundle bundleforclass:self
.class];
// 讀uistoryboard
uistoryboard *storyboard = [uistoryboard storyboardwithname:@「storyboardname」 bundle:bundle];
// 讀uiimage
uiimage *image = [uiimage imagenamed:@"icon_back_gray" inbundle:bundle compatiblewithtraitcollection:nil];
// 檔案路徑
nsstring* htmlpath = [bundle pathforresource:@"index" oftype:@"html"];
同樣也是利用bundle引數來讀取,class選擇framework中某個匯出的class就可以了。
// 獲取bundle引數,zafinanceframeworkmanager是framework中介面類
nsbundle *bundle = [nsbundle bundleforclass:[zafinanceframeworkmanager class]];
這個和在主程式中讀自己的一樣,不需要bundle引數,一定要傳的話,就傳nil或者[nsbundle mainbundle]
同樣也是利用bundle引數來讀取,class選擇目標framework中某個匯出的class就可以了。
在單體程式中,nsbundle這個引數不需要管,全部傳nil或者是預設的[nsbundle mainbundle]
就可以了。
引入了framework之後,就需要nsbundle這個引數來區分資源所在的模組。確定nsbundle比較簡單的方法是用下面這個api,其中的class只要選擇資源所在的framework中的某個class就可以了。如果是swift,並且不是類型別,那麼就可以用「self.dynamictype」來取得型別。
+ (nsbundle *)bundleforclass:(class)aclass
;
蘋果的指導原則是mvc,在大多數情況是合適的,客戶端都比較小,幾個頁面跳轉一下,加幾個動畫就差不多了。
近來,隨著移動裝置效能的提公升,手機越來越像電腦了,手機客戶端也越來越重,慢慢地跟pc端客戶端一樣。
程式變大了,為了便於維護,就要想辦法劃分模組,pc端經歷過的事情很快就在手機端重演。
從ios8開始,蘋果提供了動態鏈結庫framework,這個就相當於pc端的dll。手機客戶端的元件化、平台化也像在pc端那麼方便了。
參照
紹棠 從framework裡面讀資源檔案
這是framework內部的資源,跟其他都沒有關係。但是framework不能單獨存在,必須要放在某個 主程式 中才能起作用。bundle引數如果不傳,那麼預設是mainbundle,這種情況路徑就不對了。這種情況下,可以用下面這個api來獲得bundle引數。nsbundle bundleforc...
framework 新增新資源
戈爾多.d.羅傑 framework service 裡面相加個吐司,獲取不到string 資源 鴨子船長 一.找不到資源 r cannot be resolved to a variable 二.神避 2.1.新增資源 如 字串 到framework base core res res對應型別檔案...
從java的classpath裡面取資源
class.getresourceasstream 和 classloader.getresourceasstream 都可以用於從 classpath 裡面進行資源讀取,classpath包含classpath中的路徑和classpath中的jar。兩個方法的區別是資源的定義不同,乙個主要用於相對...