iOS集成涂鸦Smart Life SDK启动触发NSException崩溃求助
涂鸦Smart Life App SDK初始化崩溃问题解决
问题背景
我是iOS开发新手,正在尝试用涂鸦Smart Life App SDK开发IoT应用。根据快速集成指南,SDK初始化代码需要放在AppDelegate.m中,但Xcode 14.3.1不会自动生成该文件,于是我在AppNameApp.swift中添加了AppDelegate类,代码如下:
import SwiftUI import ThingSmartBaseKit @main struct AppNameApp: App { @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate var body: some Scene { WindowGroup { ContentView() } } } class AppDelegate: NSObject, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { ThingSmartSDK.sharedInstance().start(withAppKey: <#your_app_key#>, secretKey: <#your_secret_key#>) #if DEBUG ThingSmartSDK.sharedInstance().debugMode = true #else #endif return true } }
Xcode中未显示任何报错,但在模拟器上运行应用时,因未捕获的NSException类型异常崩溃,崩溃信息如下:
2023-07-13 15:26:50.051841+0300 iosAppName[22835:261964] +[NSArray yy_modelArrayWithClass:json:]: unrecognized selector sent to class 0x10c377890 2023-07-13 15:26:50.086746+0300 iosAppName[22835:261964] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[NSArray yy_modelArrayWithClass:json:]: unrecognized selector sent to class 0x10c377890' *** First throw call stack: ( 0 CoreFoundation 0x000000010bf7278b __exceptionPreprocess + 242 1 libobjc.A.dylib 0x000000010a1e2b73 objc_exception_throw + 48 2 CoreFoundation 0x000000010bf817dd __CFExceptionProem + 0 3 CoreFoundation 0x000000010bf76c66 ___forwarding___ + 1443 4 CoreFoundation 0x000000010bf78e08 _CF_forwarding_prep_0 + 120 5 iosAppName 0x000000010072ada3 +[ThingConfigLoader loadConfig] + 349 6 iosAppName 0x000000010073d969 -[ThingSmartSDK startWithAppKey:secretKey:] + 1878 7 iosAppName 0x00000001003f2869 $s10iosAppName11AppDelegateC11application_29didFinishLaunchingWithOptionsSbSo13UIApplicationC_SDySo0l6LaunchK3KeyaypGSgtF + 217 8 iosAppName 0x00000001003f29e7 $s10iosAppName11AppDelegateC11application_29didFinishLaunchingWithOptionsSbSo13UIApplicationC_SDySo0l6LaunchK3KeyaypGSgtFTo + 183 9 SwiftUI 0x00000001160aa7b2 block_destroy_helper.140 + 15626 10 SwiftUI 0x00000001160aa88c block_destroy_helper.140 + 15844 11 UIKitCore 0x00000001270a42c3 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 271 12 UIKitCore 0x00000001270a6186 -[UIApplication _callInitializationDelegatesWithActions:forCanvas:payload:fromOriginatingProcess:] + 4288 13 UIKitCore 0x00000001270abed2 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1236 14 UIKitCore 0x00000001264c5277 -[_UISceneLifecycleMultiplexer completeApplicationLaunchWithFBSScene:transitionContext:] + 179 15 UIKitCore 0x00000001270a83d0 -[UIApplication _compellApplicationLaunchToCompleteUnconditionally] + 59 16 UIKitCore 0x00000001270a879b -[UIApplication _run] + 958 17 UIKitCore 0x00000001270ad5de UIApplicationMain + 123 18 SwiftUI 0x0000000115db55ed __swift_memcpy93_8 + 12403 19 SwiftUI 0x0000000115db54a6 __swift_memcpy93_8 + 12076 20 SwiftUI 0x00000001154cb610 __swift_memcpy195_8 + 14237 21 iosAppName 0x00000001003f25a3 $s10iosAppName0abC3AppV5$mainyyFZ + 35 22 iosAppName 0x00000001003f2b19 main + 9 23 dyld 0x000000010959c384 start_sim + 10 24 ??? 0x00000002011b141f 0x0 + 8608486431 ) libc++abi: terminating due to uncaught exception of type NSException
问题原因及解决方法
崩溃提示NSArray找不到yy_modelArrayWithClass:json:方法,说明涂鸦SDK依赖的YYModel库未正确引入或链接,按以下步骤排查:
- 检查CocoaPods依赖:如果用CocoaPods集成SDK,确认Podfile包含完整的涂鸦SDK依赖,执行
pod install更新依赖。涂鸦SDK通常会自动引入YYModel,若Podfile未正确配置,需补充相关依赖。 - 手动集成补全依赖:如果是手动集成SDK,需下载YYModel源码或二进制库,添加到项目中,并在
Build Phases > Link Binary With Libraries里添加对应库文件。 - 配置Linker Flags:在项目
Build Settings > Other Linker Flags中添加-ObjC,因为YYModel基于Category扩展,需要该标志才能正常加载Category方法。 - 清理重建项目:执行
Cmd+Shift+K清理项目缓存,再用Cmd+B重新构建,避免缓存导致的链接异常。 - 更新SDK版本:确认使用的是涂鸦最新版SDK,旧版本可能存在SwiftUI项目的兼容问题,替换为最新版本尝试。
内容的提问来源于stack exchange,提问作者Niskahiki
相关产品推荐
相关产品推荐

