集成DriveQuant iOS SDK调用initializeWithTripListener报unrecognized selector错误
错误原因
- 核心原因:你调用
initializeWithTripListener:appLaunchOptions:时传入的self(即AppDelegate实例)未遵守DKTripListener协议,也未实现该协议要求的必需方法,导致运行时找不到对应selector触发崩溃,编译期的警告也是因为该参数要求的协议类型不匹配。 - 次要排查点:若已实现协议仍报错,大概率是项目编译配置缺失
-ObjC链接参数,导致SDK中定义的ObjC类别未正确加载,方法无法被识别。
相关报错截图参考:

修复步骤
- 给AppDelegate添加协议声明
在AppDelegate.m的类扩展中添加协议遵守声明,示例代码:
@interface AppDelegate () <DKTripListener> @end
- 实现DKTripListener协议的必需方法
在AppDelegate.m的实现部分添加协议要求的所有回调方法,参考实现:
#pragma mark - DKTripListener - (void)tripStarted { // 行程开始回调逻辑 } - (void)tripFinishedWithTrip:(DKTrip *)trip { // 行程结束回调逻辑,可获取行程分析数据 } - (void)tripCancelled { // 行程取消回调逻辑 } - (void)tripAnalysisErrorWithError:(DKTripAnalysisError)error { // 行程分析错误回调逻辑,可根据错误码处理异常 }
检查项目链接配置
打开项目Build Settings,搜索Other Linker Flags,确认已添加-ObjC参数,如果没有则手动添加后重新编译。验证SDK版本
确认你集成的DriveQuant SDK版本和开发文档匹配,旧版本SDK的初始化方法、协议要求可能存在差异,建议升级到最新稳定版本后再测试。
内容的提问来源于stack exchange,提问作者DiveDive
相关产品推荐
相关产品推荐

