JavaScriptCore和JSExport的奇怪行为

时间:2017-07-15 06:43:31

标签: javascript ios

我正在使用Xcode 8,Swift 3和iOS 10,并尝试使用JavaScriptCore和JSExport在我的iOS应用程序和一些javascript代码之间传递数据。我得到了一些奇怪的结果。例如,iOS Playground中的以下代码为我提供了意外的输出。

//: Playground - noun: a place where people can play

import UIKit
import JavaScriptCore

@objc protocol TestJSExports: JSExport {
    static func test() -> TestJSExports
}

class Test : NSObject, TestJSExports {
    override init() {
        super.init()
        print("Constructor called")
    }

    class func test() -> TestJSExports {
        return Test()
    }
}

print("Starting")
let javascriptContext = JSContext()
javascriptContext?.setObject(Test.self, forKeyedSubscript: "Test" as (NSCopying & NSObjectProtocol)!)
let result = javascriptContext?.evaluateScript("Test.test();")
print(result ?? "nil")

我希望

Starting Constructor called

相反,我得到

Starting undefined

有谁知道为什么会这样?

0 个答案:

没有答案