作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究 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/
我正在研究 JavaScriptCore 框架,发现了两种在 JavaScript 上下文中创建 bool 值的不同方法: import JavaScriptCore let context = JS
我是一名优秀的程序员,十分优秀!