Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScriptCore和JSExport奇怪的行为_Javascript_Ios - Fatal编程技术网

JavaScriptCore和JSExport奇怪的行为

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

我正在使用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: 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语言的一部分。