JavaScriptCore和JSExport奇怪的行为
我正在使用Xcode 8、Swift 3和iOS 10,并尝试使用JavaScriptCore和JSExport在iOS应用程序和一些javascript代码之间传递数据。我得到了一些奇怪的结果。例如,iOS游乐场中的以下代码为我提供了意外的输出JavaScriptCore和JSExport奇怪的行为,javascript,ios,Javascript,Ios,我正在使用Xcode 8、Swift 3和iOS 10,并尝试使用JavaScriptCore和JSExport在iOS应用程序和一些javascript代码之间传递数据。我得到了一些奇怪的结果。例如,iOS游乐场中的以下代码为我提供了意外的输出 //: Playground - noun: a place where people can play import UIKit import JavaScriptCore @objc protocol TestJSExports: JSExpo
//: 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")
我想
启动
调用构造函数
相反,我得到了
启动
未定义
有人知道为什么会发生这种情况吗?javascriptContext?为什么要在上面加问号?这叫可选。这是Swift语言的一部分。