美文网首页
[[NSBundle mainBundle] pathForRe

[[NSBundle mainBundle] pathForRe

作者: 江湖闹士 | 来源:发表于2021-05-17 14:28 被阅读0次
添加图片

如果上面都没问题,而且你的项目就单独一个独立项目,没有组件化,那么应该是没有问题的。

我遇到的问题是,因为组件化项目,在单独一个组件里面调用这个方法,总是返回nil,一方面可能也有上面的原因,改好之后还是有问题,最后的解决方法是

不能用这个

[[NSBundle mainBundle] pathForResource:<#(nullable NSString *)#> ofType:<#(nullable NSString *)#>];

应该用这个,里面的类名是组件化对应的一些类

[NSBundle bundleWithURL:[[[NSBundle bundleForClass:JYTorrentModuleObject.class] resourceURL] URLByAppendingPathComponent:@"JYTorrentModule.bundle"]];

这个的JYTorrentModuleObject其实也是一个继承与NSObject的空类,JYTorrentModule是组件名字

可以把这个东西领出来,进行性能优化

.h中
FOUNDATION_EXTERN NSBundle* _Nullable JYPlatformBundle(void);
.m中
NSBundle* JYPlatformBundle() {
    // 不需要每次调用都生成NSBundle,性能优化,可为启动提升2~3ms
    static dispatch_once_t onceToken;
    static NSBundle* resourceBundle = nil;
    dispatch_once(&onceToken, ^{
        resourceBundle = [NSBundle bundleWithURL:[[[NSBundle bundleForClass:JYTorrentModuleObject.class] resourceURL] URLByAppendingPathComponent:@"JYTorrentModule.bundle"]];
    });
    return resourceBundle;
}

相关文章

网友评论

      本文标题:[[NSBundle mainBundle] pathForRe

      本文链接:https://www.haomeiwen.com/subject/rxjjjltx.html