我正在使用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
有谁知道为什么会这样?