如果我有一个包含该类和该类使用的一些资源的包。如果我从bundle中加载类,我应该如何在该类中加载资源(在我加载类的bundle中)?
假设我想在从包中加载的类实例化的对象中加载图像。 如果我做
NSImage *image = [NSImage imageNamed:@"myImage"];
它会从我加载类的地方加载包内的图像吗?或者它会查看使用类和资源加载bundle的应用程序包吗?
答案 0 :(得分:7)
在OS X 10.7+上执行此操作:
NSBundle *otherBundle = [NSBundle bundleWithIdentifier: @"com.company.otherapp"];
NSImage *imageFromOtherBundle = [otherBundle imageForResource: @"imageName"];
答案 1 :(得分:3)
此方法搜索命名图像 在几个地方,返回第一个 找到匹配给定的图像 名称。搜索顺序为 如下:
- 搜索名称为的对象 使用setName显式设置: 方法,目前居住在 图像缓存。
- 搜索应用程序 主要包用于名称的文件 匹配指定的字符串。 (对于 有关捆绑如何的信息 搜索,请参阅“”访问捆绑包 捆绑编程中的内容“” 指南。)
- 搜索应用程序工具包 用于共享图像的框架 指定的名称。寻找文件时 在应用程序包中,它是 更好(但不是必须)包括 名称中的文件扩展名 参数。 (Link)
醇>
答案 2 :(得分:0)
您可以使用+bundleForClass:
的{{1}}类方法来获取特定类的包的引用。
然后,您可以使用NSBundle
的{{1}}方法获取图片的路径,并使用该路径创建‑pathForImageResource:
。