tvOS中Swift调用ObjC++分类方法报未识别选择器错误
tvOS下ObjC分类方法调用报错:unrecognized selector sent to class
我已经查过不少相关问题帖,其中唯一匹配我ObjC桥接场景的方案也不生效。问题仅出现在tvOS平台,iOS平台运行完全正常。
项目依赖层级
// 依赖链: // AppTarget->Lib1 // Lib1->Lib2 AppTarget Lib1 -- AppDelegate.swift Lib2 -- ObjCppWrapperApple.mm(定义ObjCppWrapper基类) -- ObjCppWrapperIOS.mm(定义ObjCppWrapper的iOS分类) // 注:Lib1和Lib2共用同一桥接头文件,已包含ObjCppWrapperApple.hpp和ObjCppWrapperIOS.hpp
关键代码片段
ObjCppWrapperApple.hpp
@interface ObjCppWrapper : NSObject // 其他方法 @end
ObjCppWrapperIOS.hpp
#import "ObjCppWrapperApple.hpp" @interface ObjCppWrapper (iOS) + (BOOL) PreInitialize NS_SWIFT_NAME(PreInitialize()); // 其他方法 @end
ObjCppWrapperIOS.mm
#import "ObjCppWrapperIOS.hpp" @implementation ObjCppWrapper (iOS) + (BOOL) PreInitialize { // 业务代码 } // 其他方法 @end
Swift调用代码(AppDelegate.swift)
ObjCppWrapper.PreInitialize()
报错信息
Thread 1: "+[ObjCppWrapper PreInitialize]: unrecognized selector sent to class"
已尝试的操作
- 按照相关方案建议,确保分类与原类处于同一目标(Lib2中),但Lib1仍然无法访问分类中的任何方法
- 将两个ObjCppWrapper相关文件全部移至Lib1(与AppDelegate.swift同一目标),应用依旧崩溃并报相同错误
我不清楚为什么只有tvOS平台找不到PreInitialize方法。
内容的提问来源于stack exchange,提问作者NightFuryLxD
相关产品推荐
相关产品推荐

