在 Swift 中创建 JSStringRef

Create JSStringRef in Swift

我在 Swift 中使用新的(即 Objective-C)JavaScriptCore API。但是,JSContext 的 evaluateScript 方法不支持 JSEvaluateScript(来自 C API)支持的源 URL 和起始行号参数,因此我试图从 [=26] 调用 C 方法=]代码。

C 方法采用 JSStringRefs 而不是字符串,因此我需要创建它们。当我尝试明显的解决方案时:

println(JSStringCreateWithCFString("an example").takeRetainedValue())

我得到一个 EXC_BAD_ACCESS(代码=EXC_I386_GPFLT)。 (我使用 takeRetainedValue() 因为文档指出 JSStringCreateWithCFString 遵循 Create Rule,但是 takeUnretainedValue() 给了我同样的错误)。我做错了什么?

这是 JavaScriptCore Swift header 中的错误。例如,现在正确的代码是:

import JavaScriptCore

let str = JSStringCreateWithCFString("an example")
let len = JSStringGetLength(str)
JSStringRelease(str)