声网 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 类。