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.
我正在使用 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.