为什么在Objective-C框架中仅一个类会出现未定义的符号错误?

问题描述

我在Swift中遇到了一个奇怪的链接错误-一个未定义的Symbol,但是当我从Objective-C框架将Any投射到特定的Objective-C类时,它只是 已经桥接。

以下是未链接代码

    let cameras = ZoomSDK.shared()?.getSettingService()?.getVideoSetting()?.getCameraList() ?? []
        print ("cameras are \(cameras)")
        
        for camera in cameras {
           let cam = camera as? SDKDeviceInfo    // <--  Undefined symbol: _OBJC_CLASS_$_SDKDeviceInfo
        }

getCameraList()返回目标C中的NSArray *(在Swift中映射为[Any])。 SDKDeviceInfo有两种我感兴趣的方法getdeviceid()getDeviceName()

但是这很奇怪-大多数测试会使我相信我没有正确包含框架或类正在运行:

  • 我可以跳转到Xcode中SDKDeviceInfo的定义
  • 我可以将camera转换为同一标头中的不同类 ,而不会引发链接错误。 (尽管同一标头中有一些类也会引发链接错误
  • 正常运行时,控制台日志显示camerasSDKDeviceInfo的数组
  • 如果设置了断点,则可以在调试器中将camera强制转换为SDKDeviceInfo并正确检查(调用camera.setdeviceid()可以正常工作)
  • 如果我创建一个目标C帮助程序类并进行桥接,则可以从obj C中进行调用并投射摄像头
  • 如果将camera投射到AnyObject,我可以打电话给camera.setdeviceid(),而不会出现任何链接错误

关于为什么该特定类不起作用的任何想法?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)