JSValue init(bool:in:) 与 JSValueMakeBoolean()
JSValue init(bool:in:) vs JSValueMakeBoolean()
我正在研究 JavaScript 核心框架,发现了两种在 JavaScript 上下文中创建布尔值的不同方法:
import JavaScriptCore
let context = JSContext()
let trueVal = JSValue(bool: true, in: context)
JSValueIsBoolean(context?.jsGlobalContextRef, trueVal?.jsValueRef) // true
let otherTrueValue = JSValueMakeBoolean(context?.jsGlobalContextRef, true)
JSValueIsBoolean(context?.jsGlobalContextRef, otherTrueValue) // true
JSValue(bool:in:)
和JSValueMakeBoolean
有什么区别?
为 JSValueRef
生成的 header 保留此评论:
* Copyright (C) 2006 Apple Inc. All rights reserved.
对于JSValue
:
* Copyright (C) 2013 Apple Inc. All rights reserved.
似乎 JavaScriptCore 框架最初是为具有基于 C-function API 的旧 OS X(在 the reference page 中显示 10.5+)开发的。后来 iOS 有了基于现代 class 的 API。
(虽然,我从来没有在这么老的 OS X 中使用过 JavaScriptCore。)
我还没有深入探索 JavaScriptCore,所以我不确定在某些情况下是否仍然需要这种基于 C-function 的 API。
但通常,您无需接触 C-function API。例如,您可以使用 isBoolean
属性 而不是 C-function JSValueIsBoolean
.
if let trueVal = JSValue(bool: true, in: context) {
print(trueVal.isBoolean) //->true
}
我正在研究 JavaScript 核心框架,发现了两种在 JavaScript 上下文中创建布尔值的不同方法:
import JavaScriptCore
let context = JSContext()
let trueVal = JSValue(bool: true, in: context)
JSValueIsBoolean(context?.jsGlobalContextRef, trueVal?.jsValueRef) // true
let otherTrueValue = JSValueMakeBoolean(context?.jsGlobalContextRef, true)
JSValueIsBoolean(context?.jsGlobalContextRef, otherTrueValue) // true
JSValue(bool:in:)
和JSValueMakeBoolean
有什么区别?
为 JSValueRef
生成的 header 保留此评论:
* Copyright (C) 2006 Apple Inc. All rights reserved.
对于JSValue
:
* Copyright (C) 2013 Apple Inc. All rights reserved.
似乎 JavaScriptCore 框架最初是为具有基于 C-function API 的旧 OS X(在 the reference page 中显示 10.5+)开发的。后来 iOS 有了基于现代 class 的 API。
(虽然,我从来没有在这么老的 OS X 中使用过 JavaScriptCore。)
我还没有深入探索 JavaScriptCore,所以我不确定在某些情况下是否仍然需要这种基于 C-function 的 API。
但通常,您无需接触 C-function API。例如,您可以使用 isBoolean
属性 而不是 C-function JSValueIsBoolean
.
if let trueVal = JSValue(bool: true, in: context) {
print(trueVal.isBoolean) //->true
}