OC 与 混合开发的问题

使用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 添加这个标识

你可能感兴趣的:(OC 与 混合开发的问题)