如何声明继承的内置协议,以便它可以从另一个框架或应用程序导入?
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 文件中。
我无法从另一个 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 文件中。