Xcode WKWebViewJavascriptBridge 的链接器错误

Xcode Linker error for WKWebViewJavascriptBridge

我正在使用 WebViewJavascriptBridge 进行 JS 和本机代码之间的交互。我发现 UIWebView 有时很慢,所以我尝试切换到 WKWebView。

项目在使用 UIWebView 时没有问题。

var bridge:WebViewJavascriptBridge!

override func viewDidAppear(animated: Bool) {

    super.viewDidAppear(animated)

    self.webView = UIWebView(frame: self.viewport.frame)

    self.view.addSubview(webView!)

    let url = NSBundle.mainBundle().URLForResource("index", withExtension: "html", subdirectory: "www")
    webView!.loadRequest(NSURLRequest(URL: url!))

    webView!.scrollView.bounces = false

    self.bridge = WebViewJavascriptBridge(forWebView: webView, handler: { (data, callback) -> Void in
        callback("msg from bridge")
    })

}

工作编译器列表:

但是当我更改为 WKWebViewJavascriptBridge 时,它​​在链接时崩溃了:

var bridge:WKWebViewJavascriptBridge!

override func viewDidAppear(animated: Bool) {

    super.viewDidAppear(animated)

    self.webView = WKWebView(frame: self.viewport.frame)

    self.view.addSubview(webView!)

    let url = NSBundle.mainBundle().URLForResource("index", withExtension: "html", subdirectory: "www")
    webView!.loadRequest(NSURLRequest(URL: url!))

    webView!.scrollView.bounces = false

    self.bridge = WKWebViewJavascriptBridge(forWebView: webView, handler: { (data, callback) -> Void in
        callback("msg from bridge")
    })

}

错误信息:

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_WKWebViewJavascriptBridge", referenced from:
      type metadata accessor for __ObjC.WKWebViewJavascriptBridge in ViewController.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

而且那些 .m 文件似乎在链接之前没有被编译。

请多指教

呸,终于通过编辑桥头让它工作了。

在文件 WKWebViewJavascriptBridge.h 中,找到这些行:

#if (__MAC_OS_X_VERSION_MAX_ALLOWED > __MAC_10_9 || __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1)
#define supportsWKWebKit
#endif

然后删除 #if #endif 对,只留下 #define supportsWKWebKit 位。但是确保你使用的是iphone 7.1 或更高版本,否则它不支持WKWebkit.