问题描述
我在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
转换为同一标头中的不同类 ,而不会引发链接错误。 (尽管同一标头中有一些类也会引发链接错误) - 正常运行时,控制台日志显示
cameras
是SDKDeviceInfo
的数组 - 如果设置了断点,则可以在调试器中将
camera
强制转换为SDKDeviceInfo
并正确检查(调用camera.setdeviceid()
可以正常工作) - 如果我创建一个目标C帮助程序类并进行桥接,则可以从obj C中进行调用并投射摄像头
- 如果将
camera
投射到AnyObject
,我可以打电话给camera.setdeviceid()
,而不会出现任何链接错误
关于为什么该特定类不起作用的任何想法?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)