如果上面都没问题,而且你的项目就单独一个独立项目,没有组件化,那么应该是没有问题的。
我遇到的问题是,因为组件化项目,在单独一个组件里面调用这个方法,总是返回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;
}
网友评论