如何解决为什么在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
转换为同一标头中的不同类 ,而不会引发链接错误。 (尽管同一标头中有一些类也会引发链接错误) - 正常运行时,控制台日志显示
cameras
是SDKDeviceInfo
的数组 - 如果设置了断点,则可以在调试器中将
camera
强制转换为SDKDeviceInfo
并正确检查(调用camera.setdeviceid()
可以正常工作) - 如果我创建一个目标C帮助程序类并进行桥接,则可以从obj C中进行调用并投射摄像头
- 如果将
camera
投射到AnyObject
,我可以打电话给camera.setdeviceid()
,而不会出现任何链接错误
关于为什么该特定类不起作用的任何想法?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。