使用WKScriptMessageHandler
时 遇到问题 , 专门用来 OC调用swift 方法的 项目名-Swift.h文件 , 出现 no name or protocal named 'WKScriptMessageHandler' 没有找到遵守WKScriptMessageHandler 这个协议
解决方法 尝试一
WKScriptMessageHandler 这个协议 ,不写在分类中 要 写在 类声明的 后面
class HomeViewController: UIViewController ,WKScriptMessageHandler{}复制代码
然后系统会自动加上 @objc
@objc(userContentController:didReceiveScriptMessage:) internal func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {}复制代码
然而并没有乱用 , 然后我忽然想到 , 既然协议有问题, 我就去掉 协议就好了啊
OC 的机制是运行时,发送消息 , 人为的写分类只是为了 有智能提示, 可以很快的写出方法而已, 我去掉后 系统自然还是能找到 selector 的 然而还是我太天真 , 添加代理的时候 仍然会报错
完蛋了!!!!
最后的解决方法是 : 我不再使用 prefix 文件
注意
遇到类似 项目名-Swift.h文件出现的错误 一个是 可以将报错的方法 用 filePrivate 不暴露出来, 一个是 检查是否类型不兼容 OC 或可以 @objc 添加这个标识