微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么在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 举报,一经查实,本站将立刻删除。