如果我有一個包含該類所使用的類和一些資源的包。如果我從bundle中加載類,應該如何加載該類中的資源(位於從中加載類的包中)?從另一個軟件包加載資源
比方說,我想從我的對象中加載一個圖像,該對象是從從包中加載的類實例化的。 如果我做
NSImage *image = [NSImage imageNamed:@"myImage"];
將其加載這就是從那裏,我從加載的類的包內的圖像?還是會查看加載了類和資源的應用程序包?
如果我有一個包含該類所使用的類和一些資源的包。如果我從bundle中加載類,應該如何加載該類中的資源(位於從中加載類的包中)?從另一個軟件包加載資源
比方說,我想從我的對象中加載一個圖像,該對象是從從包中加載的類實例化的。 如果我做
NSImage *image = [NSImage imageNamed:@"myImage"];
將其加載這就是從那裏,我從加載的類的包內的圖像?還是會查看加載了類和資源的應用程序包?
此方法搜索名爲圖像 在幾個地方,返回第一 圖像找到匹配給定 名。搜索的順序爲 如下:
- 搜索對象的名字被 設定明確使用的setName: 方法,目前居住在 圖像緩存。
- 在應用程序的 主文件夾中搜索名稱爲 的文件與指定的字符串匹配。 (有關如何在bundle 搜索,請參見「‘訪問一個包的 內容’」捆綁編程 指南。 信息)
- 搜索應用套件 框架與 指定名稱的共享圖像。當在應用程序包中查找文件 時, 更好(但不是必需的)將 的文件擴展名包含在名稱 參數中。 (Link)
您可以使用NSBundle
的+bundleForClass:
類的方法獲取特定類的包的參考。
然後,您可以使用NSBundle
的‑pathForImageResource:
方法獲取圖像的路徑並使用該路徑創建NSImage
。
在OS X 10.7以上版本做這個做:
NSBundle *otherBundle = [NSBundle bundleWithIdentifier: @"com.company.otherapp"];
NSImage *imageFromOtherBundle = [otherBundle imageForResource: @"imageName"];
那麼,你如何你會加載它在這種情況下? 1)不適用,因爲圖像之前尚未加載(它不在緩存中)2)不適用,因爲它位於單獨的包中,而不是主包3)它不是一個appkit框架。 – thealch3m1st
創建一個'NSBundle'實例。獲取文件路徑。加載圖像。 –
但我有一個對象,從一個從該包加載的類實例化。我是否創建了該類所在的同一個包的NSBundle實例,並從該包中加載圖像?如果這個類在一個bundle中,我該如何在這個類中定義的方法中加載包含這個類的bundle? – thealch3m1st