我正在尝试创建一个静态框架,它将使用一些图像在其视图中显示。我通过在我的sdk项目中添加目标,从XCode创建了MyFrameworkBundle.bundle
。添加了捆绑包中的所有图像并创建了捆绑包,并为该目标提供了捆绑标识符my.frameworkbundle
。
现在我试图在我的框架中获取该包,如下所示:
NSBundle * mybundleRef = [NSBundle bundleWithIdentifier:@"my.frameworkbundle"];
然后我将这些框架和资源包放在另一个项目中,并试图用上面的行运行函数。它总是返回null。即使我试图获取上面代码的框架,即:。
NSBundle * mybundleRef = [NSBundle bundleWithIdentifier:@"my.framework"];
这也让我无效。但是,如果我将此框架从静态更改为动态,它总是给我正确的捆绑。 因为我将在Unity中使用它,所以我不想要一个动态框架来避免后期处理脚本。
我也尝试了以下代码:
NSString *bundleString =[[NSBundle mainBundle] pathForResource:@"MyFrameworkBundle" ofType:@"bundle"];
NSBundle * PlayCacheBundle = [NSBundle bundleWithPath:bundleString];
但是它给出了错误
找不到合适的图片
系统详细信息:
答案 0 :(得分:0)
由于框架是静态链接的,因此类似乎属于主捆绑包,因此| KEY | MODULE | ACTION | NEXT_KEY | PREV_KEY |
|-----|--------|---------|----------|----------|
| 1 | A | SENT | 2 | (null) |
| 2 | A | RECEIVE | (null) | 1 |
| 3 | A | RECEIVE | (null) | 4 |
| 4 | A | SENT | 3 | (null) |
| 5 | A | SENT | (null) | (null) |
| 6 | A | SENT | 7 | (null) |
| 7 | A | RECEIVE | (null) | 6 |
| 8 | A | SENT | (null) | (null) |
不起作用。
您可以使用以下方法创建指向框架的捆绑软件:
+[NSBundle bundleForClass:]
我已经在一个空项目上进行了测试,它可以正常工作,并且可以加载NIB文件。我尚未测试资产目录,但我怀疑,因为这是有效的
NSString *fwPath = [[[NSBundle mainBundle] privateFrameworksPath] stringByAppendingPathComponent:@"Shared.framework"];
NSBundle *bundle = [NSBundle bundleWithPath:fwPath];
参考,所以应该没问题。
答案 1 :(得分:0)
静态库只是目标文件的编译(一个.a文件中有多个.o文件)。当它们链接到可执行目标(应用程序二进制文件或动态库)时,它们的身份消失,并且除了代码和常量数据外,它们没有其他资源。