iOS 原生插件开发中集成第三方Pod包报错:attempt to insert nil object from objects[1]
iOS 原生插件开发中集成第三方Pod包报错:attempt to insert nil object from objects[1]
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | 14.4.1 | HBuilderX |
操作步骤:
- 通过 cocoapods 方式,在自己创建的第三方 pod 插件中,引入该依赖后。
- 项目运行,就会卡在 HBuilder Hello 白色底启动页面,然后报错如图所示。
预期结果:
- 在 HBuilder 启动页面后,正常进入 vue 写的 uniapp 程序。
实际结果:
- 卡在 HBuilder Hello 白色底启动页面,然后报错如图所示。
bug描述:
- 我在 UniApp iOS 原生插件开发模式下,自己新建一个pod包,通过
s.dependency 'TCICSDK_Pro', '~> 1.8.5.8'
引入了 TCICSDK_Pro。并把 uniapp ios 的 demo 工程改用cocoapods管理并引入自己新建的插件。 - 但是运行项目时,遇到了一个错误:attempt to insert nil object from objects[1]。
- 这个错误似乎发生在 HBWeexUnijs 类的某个方法中,它在尝试获取启动参数、适配器或 UniUSCompletion 时,创建字典时传入了空的 value。
- 错误信息:
- attempt to insert nil object from objects[1]
- Thread 1: NSPlaceholderDictionary initWithObjects:forKey:count): attempt to insert nil object from objects[1]
- 由于 HBWeexUnijs 是闭源的 framework,我没法直接修改代码。
- 用的是最新下载的 ios sdk 源码。
1 回复
这个错误通常是由于在创建字典时传入了nil值导致的。在iOS原生插件开发中,当集成第三方Pod包时出现这个问题,可以尝试以下解决方案:
- 检查Pod依赖冲突:
- 确保TCICSDK_Pro与其他依赖库版本兼容
- 尝试更新或降级TCICSDK_Pro版本
- 检查插件初始化流程:
- 确认插件在合适时机初始化
- 避免在App启动阶段执行耗时操作
- 检查资源加载:
- 确保所有必要的资源文件已正确打包
- 检查bundle加载路径是否正确
- 临时解决方案: 可以尝试在Podfile中添加以下配置:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['GCC_ENABLE_OBJC_EXCEPTIONS'] = 'YES'
end
end
end