如何通过 WKWebVIew 或 JSC 在 iOS 应用程序中加载 WebAssembly

jon*_*eri 7 ios javascriptcore swift wkwebview webassembly

我正在尝试.wasm从基于 Swift 的 iOS 应用程序中加载和执行 WebAssembly 。我首先尝试使用JavaScriptCore 框架,但是WebAssembly.*当我尝试评估一个简单的脚本时,该模块在上下文中不可用。我能够确认WebAssembly未通过 Safari 调试器控制台定义。

然后我尝试使用 WKWebView,因为我相信缺乏WebAssembly是由于JSC 不支持WKWebView 应该支持的JIT。我得到了同样的结果。

这是一个在 iPhone X 12.4 模拟器、Xcode 10.3 和手动添加到项目的 WebKit 框架上运行的简单应用程序。确保打开 Safari 并为 WKWebView 调试器选择“Developer>Simulator”。

import UIKit
import WebKit

class ViewController: UIViewController {
    @IBOutlet weak var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
    }
    @IBAction func onClick(_ sender: UIButton) {
        let testWasm = """
            if(typeof WebAssembly !== 'undefined') {
                console.log("Hello, Wasm.");
            } else {
                console.log("No Wasm for you!");
            }
        """

        webView.evaluateJavaScript(testWasm)
    }
}
Run Code Online (Sandbox Code Playgroud)

iOS 真的有办法将 WebAssembly 加载到基于 Swift 的应用程序中吗?

Vol*_*kyy 3

我想使用 JSC 运行一些基准测试,以将其与 Wasm3 进行比较。
基本上我遇到了同样的情况,到目前为止还无法修复。

Wasm3在 iOS 上运行得非常好,可能适合您目前的需求。

目前,根据此评论,您无法在模拟器上使用 JSC 运行 WebAssembly 。