声网 Classroom SDK for iOS 很大部分是使用 Swift 来编写的,支持 Swift 5.0 及以上版本。Swift 自 5.0 起支持 ABI 稳定,5.1 起支持 Module Stability。声网 Classroom SDK for iOS 开启了 Module Stability,这会导致你在修改声网 Classroom SDK for iOS 源码时遇到一些报错。
本页列出了一些常见报错以及对应的解决方法。
你在运行灵动课堂 iOS 项目 1.1.0 版本时可能会遇到以下报错:
声网 Classroom SDK v1.1.0 支持的是 Swift 5.3.2,如果你使用的是 Swift 5.4,就会出现上述报错。
如果你在项目中直接集成完整的声网 Classroom SDK,建议你将声网 Classroom SDK 升级至 v1.1.2 或以上版本。声网 Classroom SDK 自 v1.1.2 起支持 Swift 5.0 及以上版本。
在修改声网 Classroom SDK 源码时,如果 A.framework 开启了 BUILD_LIBRARY_FOR_DISTRIBUTION,B 继承 A 中的类, 那么 B 使用 extension
且在 extension
里使用 @objc
时就会出现以下报错:
将 @objc
代码放在主类中。
在修改声网 Classroom SDK 源码时,如果 A.framework 开启了 BUILD_LIBRARY_FOR_DISTRIBUTION,B 继承 A 中的类,B 中的类使用 @objc
可能出现以下报错:
去除 @objc
,或者使用 @objcMembers
修饰。
在修改声网 Classroom SDK 源码时,如果 A.framework 开启了 BUILD_LIBRARY_FOR_DISTRIBUTION,B 继承 A 中的类,那么 B 使用 extension
且在 extension
里实现 UITableViewDataSource
或 UITableViewDelegate
,可能会出现以下报错:
实现自定义的 @objc
协议 AgoraApaasReportorEventTube
时也会出现以下报错:
将 Delegate 相关代码放在主类中。
你在修改声网 Classroom SDK 源码时,A.framework 有 AgoraAcceptedInfo
这个 struct,B.framework 里的 Swift 类 AgoraHandsUpVM
包含 AgoraAcceptedInfo
类的成员变量,同时 B.framework 中有一个 OC 文件调用了 AgoraHandsUpVM
。这种情况下,可能会出现以下报错:
B.framework 是静态编译,Swift 文件生成不了其他库非 OC 的类型。
将 AgoraAcceptedInfo
修改成继承于 NSObject,并使用 @objc
或 @objcMembers
修饰。
你在修改声网 Classroom SDK 源码时,如果 A.framework 有 Swift 类 AgoraReportor
,B.framework 的 Swift 类 AgoraApaasReportor
继承于 AgoraReportor
,同时 B.framework 有 OC 文件引用 AgoraApaasReportor
,可能会碰到以下报错:
创建一个 Wrapper 类封装 AgoraApaasReportor
,OC 文件引用 Wrapper 类。