You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 16:13:27