2016-09-26 2 views
0
나는 JavaScriptCore는 프레임 워크와 함께 놀아 오전 자바 스크립트 맥락에서 논리 값을 생성하는 두 가지 방법을 발견했다

:JSValue 초기화 (부울 : JSValueMakeBoolean() 대 :)에서

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 대해 생성 된 헤더 댓글 유지

답변

1

:

* Copyright (C) 2006 Apple Inc. All rights reserved. 

그리고 JSValue

* Copyright (C) 2013 Apple Inc. All rights reserved. 

가 JavaScriptCore는 프레임 워크가 제 오래 OS X (the reference page으로 10.5를 도시)으로 개발 된 같다을 C 함수 기반 API. 그리고 나중에 현대적인 클래스 기반 API로 iOS에 왔습니다.

내가 그 안에 너무 깊이 JavaScriptCore는 탐구하지 않은

(비록, 나는 그런 오래된 OS X의에서 JavaScriptCore는 사용한 적이있다), 그래서는 C-기능을 기반 API가 여전히 필요 확실하지 않다 경우 또는 아닙니다.

그러나 일반적으로 C 함수 API를 접할 필요가 없습니다. 예를 들어 C 함수 JSValueIsBoolean 대신 isBoolean 속성을 사용할 수 있습니다.

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