问题描述
|
如果我有一个包含一个类和该类使用的一些资源的捆绑软件。如果我从捆绑软件中加载类,应该如何加载该类中的资源(加载该类的资源在捆绑软件中)?
假设我想在从捆绑包加载的类实例化的对象内部加载图片。
如果我做
NSImage *image = [NSImage imageNamed:@\"myImage\"];
它会加载我从中加载类的包中的图像吗?还是在加载了类和资源的捆绑软件的捆绑软件中查找?
解决方法
此方法搜索命名图像
在几个地方,返回第一个
找到与给定图像匹配的图像
名称。搜索顺序为
如下:
搜索名称为
使用setName显式设置:
方法,目前位于
图像缓存。
搜索应用程序的
名称为文件的主捆绑包
匹配指定的字符串。 (对于
有关捆绑包的信息
搜索,请参阅““访问捆绑包”
捆绑编程中的“目录”
指南。)
搜索应用套件
与共享图像的框架
指定的名称。查找文件时
在应用程序包中,它是
更好(但不是必需)以包括
名称中的文件扩展名
参数。 (链接)
, 在OS X 10.7+上,执行以下操作:
NSBundle *otherBundle = [NSBundle bundleWithIdentifier: @\"com.company.otherapp\"];
NSImage *imageFromOtherBundle = [otherBundle imageForResource: @\"imageName\"];
, 您可以使用NSBundle
的+bundleForClass:
类方法来获取对特定类的包的引用。
然后可以使用NSBundle
的‑pathForImageResource:
方法获取图像的路径,并使用该路径创建NSImage
。