如何声明继承的内置协议,以便它可以从另一个框架或应用程序导入?

How to declare inherited inbuilt protocol so that it can be imported from another framework or app?

我无法从另一个 app/framework 调用此 swift 文件,因为我收到以下错误。

"Unknown class name 'WKScriptMessageHandler'"

这是我在框架中声明的mySwift.swift。

@objcMembers public class HSIWKJavascriptBridge : NSObject, WKScriptMessageHandler{
    public func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
        if message.name == "test", let messageBody = message.body as? String {
            print(messageBody)
        }
    }
}

swift 编译器在编译时自动生成这段代码。

@class WKUserContentController;
@class WKScriptMessage;

SWIFT_CLASS("_TtC5MyFwk21HSIWKJavascriptBridge")
@interface HSIWKJavascriptBridge : NSObject <WKScriptMessageHandler>
- (void)userContentController:(WKUserContentController * _Nonnull)userContentController didReceiveScriptMessage:(WKScriptMessage * _Nonnull)message;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

现在的错误是 WKScriptMessageHandler 没有像

那样自动声明
@class WKUserContentController;
@class WKScriptMessage;

因此我无法使用该框架。

我在我的项目设置中尝试了与您相同的 HSIWKJavascriptBridge swift class。我能够在我的 Obj-C 文件中使用这个 class 没有任何问题。

因为WKScriptMessageHandler是一个protocol,它不会被转发声明为其他classes (WKUserContentController, WKScriptMessage) in [=25] =] 编译器生成的代码。

请确保 import WebKit 已添加到您的 Swift 文件中。