gpt4 book ai didi

ios - JSValue 初始化( bool :in:) vs JSValueMakeBoolean()

转载 作者:行者123 更新时间:2023-11-28 16:09:58 26 4
gpt4 key购买 nike

我正在研究 JavaScriptCore 框架,发现了两种在 JavaScript 上下文中创建 bool 值的不同方法:

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 函数的 API 的旧 OS X(在 the reference page 中显示 10.5+)开发的。后来,它通过基于现代类的 API 来到 iOS。

(虽然,我从来没有在这么旧的 OS X 中使用过 JavaScriptCore。)

我还没有深入探索 JavaScriptCore,所以我不确定在某些情况下是否仍然需要这种基于 C 函数的 API。

但通常,您无需接触 C 函数 API。例如,您可以使用 isBoolean 属性而不是 C 函数 JSValueIsBoolean

if let trueVal = JSValue(bool: true, in: context) {
print(trueVal.isBoolean) //->true
}

关于ios - JSValue 初始化( bool :in:) vs JSValueMakeBoolean(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39711449/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com