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包时出现这个问题,可以尝试以下解决方案:

  1. 检查Pod依赖冲突:
  • 确保TCICSDK_Pro与其他依赖库版本兼容
  • 尝试更新或降级TCICSDK_Pro版本
  1. 检查插件初始化流程:
  • 确认插件在合适时机初始化
  • 避免在App启动阶段执行耗时操作
  1. 检查资源加载:
  • 确保所有必要的资源文件已正确打包
  • 检查bundle加载路径是否正确
  1. 临时解决方案: 可以尝试在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
回到顶部