gpt4 book ai didi

macos - Cocoa - 从非主包加载资源

转载 作者:行者123 更新时间:2023-12-03 16:43:38 25 4
gpt4 key购买 nike

我的应用程序加载一些自定义 bundle ,并且它想要使用这些 bundle 中的资源。

似乎无法从主包实例获取资源,例如 [NSBundle mainBundle] pathForResource:ofType:]。

所以我用 +[NSBundle pathForResource:ofType:inDirectory:] 替换它,效果很好。但是资源加载代码应该知道“inDirectory:”的捆绑路径,这非常不方便。如果 bundle 移动到其他路径,它将不起作用。

还有其他方法可以解决这个问题吗?谢谢!

最佳答案

我不完全确定您想要完成什么,但如果您想加载 bundle 资源而不使用 bundle 的直接路径,您可以使用 [NSBundle bundleForClass:][NSBundle bundleWithIdentifier:]。一旦您引用了所需的 bundle 实例,您就可以按如下方式访问其内容:

NSBundle myBundle = [NSBundle bundleWithIdentifier:@"com.my.identifier"];
[myBundle pathForResource:@"myResource" ofType:@"type"];

如果您希望即使在 bundle 移动后它仍然准确,这可能是一个更棘手的问题。正如文档所述,“NSBundle 对象代表文件系统中的一个位置......”。如果该位置发生移动, bundle 实例仍将在现有位置中查找。我认为您需要找出另一种机制来确定 bundle 是​​否已移动并从新位置重新创建 NSBundle 实例。

关于macos - Cocoa - 从非主包加载资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8813641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com