bundle是乙個目錄,其中包含了程式會使用到的資源. 這些資源包含了如影象,聲音,編譯好的**,nib檔案(使用者也會把bundle稱為plug-in). 對應bundle,cocoa提供了類nsbundle.
我們的程式是乙個bundle. 在finder中,乙個應用程式看上去和其他檔案沒有什麼區別. 但是實際上它是乙個包含了nib檔案,編譯**,以及其他資源的目錄. 我們把這個目錄叫做程式的main bundle
bundle中的有些資源可以本地化.例如,對於foo.nib,我們可以有兩個版本: 乙個針對英語使用者,乙個針對法語使用者. 在bundle中就會有兩個子目錄:english.lproj和french.lproj,我們把各自版本的foo.nib檔案放到其中. 當程式需要載入foo.nib檔案時,bundle會自動根據所設定的語言來載入. 我們會在16章再詳細討論本地化
通過使用下面的方法得到程式的main bundle
nsbundle *mybundle = [nsbundle mainbundle];
一旦我們有了nsbundle 物件,那麼就可以訪問其中的資源了
// extension is optional
nsstring *path = [goodbundle pathforimageresource:@"mom"];
nsimage *momphoto = [[nsimage alloc] initwithcontentsoffile:path];
bundle中可以包含乙個庫. 如果我們從庫得到乙個class, bundle會連線庫,並查詢該類:
class newclass = [goodbundle classnamed:@"rover"];
id newinstance = [[newclass alloc] init];
如果不知到class名,也可以通過查詢主要類來取得
class aclass = [goodbundle principalclass];
id aninstance = [[aclass alloc] init];
可以看到, nsbundle有很多的用途.在這當中, nsbundle負責(在後台)載入nib檔案. 我們也可以不通過nswindowcontroller來載入nib檔案, 直接使用nsbundle:
bool successful = [nsbundle loadnibnamed:@"about" owner:someobject];
注意噢, 我們指定了乙個物件someobject作為nib的file's owner
使用initwithcontentsoffile時,檔案路徑的寫法 使用initwithcontentsoffile方法可以通過讀取乙個檔案的內容來初始化物件。 但檔案的路徑應該怎麼確定呢? 可以使用nsbundle的物件來獲取。 例如當前程式所在目錄下有個檔案re.xml,我們要將該檔案的內容做為nsdata的資料來源來初始化乙個nsdata物件,可以用下面的方法來實現:總結:nsstring *filepath = [[nsbundle mainbundle] pathforresouse:@"
re" oftype:@"
xml」];
nsdata *data = [[nsdata alloc] initwithcontentsoffile:filepath];
讀取plist中的內容:
nsstring *datapath = [[nsbundle mainbundle] pathforresource:@
"data"
oftype:@
"plist"
]; self.data =[nsarray arraywithcontentsoffile:datapath];
刪除本地檔案
在此記錄一下:在以後的開發中不直接使用任何相對路徑,而是使用經過計算以後的絕對路徑。
一.獲取
1. nsstring *path = [[nsbuddle mainbuddle] pathforresource:@"resourcename"
oftype@"resourcetype」];
uiimage *image = [[uiimage imagewithcontentsoffile:path];
2. uiimage *image = [uiimage imagenamed:@"imagename」];
載入:
//方法1
uiimage *imag1 = [uiimage imagenamed:@"image.png"]; //這種方式載入會快取,下次用的時候不用再載入,但是缺點是應用程式占用記憶體。
//方法2
//很好的解決了記憶體快取的問題
uiimage *image2 = [uiimage imagewithcontentsoffile:[[nsbundle mainbundle] pathforresource:@"image.png" oftype:nil]];
//方法3
//很好的解決了記憶體的快取問題
nsdata *imagedata = [nsdata datawithcontentsoffile:[[nsbundle mainbundle] pathforresource:@"image.png" oftype:nil]];
uiimage *image3 = [uiimage imagewithdata:imagedata];
二.獲取plist檔案
nsarray *array =[[nsarray alloc]initwithcontentsoffile:[[nsbundlemainbundle]pathforresource:@"name"oftype:@"plist"]];
nsdictionary *dict=[arrayobjectatindex:index];//將plist檔案中的內容轉換成字典
程式猿神奇的手,每時每刻,這雙手都在改變著世界的互動方式!
全網輿情監測系統功能板塊具體詳介
現如今,網路平台資訊傳擴散速度快,所以輿情監測的重要性也越來越為突顯。但面對如此龐大的網路資訊量,要確保資訊資料收集的完整 準確和可用性,利用輿情監測軟體進行資訊監測是必要的。那麼,問題是到底輿情監測軟體哪個比較好呢?比較好的輿情監測軟體又有哪些呢?面對市場上多種多樣的輿情監測軟體,雖然有一定的差異...
北京快遞外賣等人員必須核酸檢測 具體情況介紹
據央視新聞訊息,6 月 23 日,在北京市新冠肺炎疫情防控工作新聞發布會上,北京新冠肺炎疫情防控工作領導小組檢疫檢測工作組副組長 北京市衛生健康委員會副主任張華通報了全市開展核酸檢測情況。北京快遞外賣等人員必須核酸檢測 北京市舉程式設計客棧行新型冠狀病毒肺炎疫情防控工作第 130 場新聞發布會,qe...
Geodatabase ToolSet的介紹與使用
geodatabasetoolset簡稱為gdbt,是 esri 官網提供的免費工具,在 catalog 中用來協助監測 了解 報告多使用者地理資料庫的工具。用 gdbt 可以協助監測地理資料庫每天的健康狀況,更詳盡的了解資料庫的效能,並進行資料庫效能調優。gdbt 工作與sql server or...