iOS 프로젝트에서 JavaScriptCore 프레임 워크/라이브러리를 사용하나요? 기존 프레임 워크 목록에서 사용할 수있는 프레임 워크가 보이지 않아서 Apple 오픈 소스 사이트에서 소스 코드를 다운로드했습니다. http://www.opensource.apple.com/release/ios-40/iphone - JavaScriptCore 프레임 워크/라이브러리
이제는이를 응용 프로그램에 통합하기 위해 필요한 작업을 알고 싶습니다. 이 API는 SDK에 이미 들어 있으며 머리글 만 복사하여 메서드를 호출 할 수 있습니까? 아니면 모든 소스 코드를 프로젝트에 복사해야합니까?
헤더를 복사하고 가져 오는 작업 프로젝트가 있습니다. 그러나 그것이 어떻게 작동하는지 이해할 수는 없습니다. 시작시 호출되는 아래와 같은 메소드가 있습니다.
#include <dlfcn.h>
@implementation JSCocoaSymbolFetcher
+ (void)populateJavascriptCoreSymbols
{
_JSEvaluateScript = dlsym(RTLD_DEFAULT, "JSEvaluateScript");
_JSGarbageCollect = dlsym(RTLD_DEFAULT, "JSGarbageCollect");
_JSGlobalContextCreate = dlsym(RTLD_DEFAULT, "JSGlobalContextCreate");
_JSGlobalContextRetain = dlsym(RTLD_DEFAULT, "JSGlobalContextRetain");
_JSGlobalContextRelease = dlsym(RTLD_DEFAULT, "JSGlobalContextRelease");
_JSContextGetGlobalObject = dlsym(RTLD_DEFAULT, "JSContextGetGlobalObject");
_JSClassCreate = dlsym(RTLD_DEFAULT, "JSClassCreate");
_JSClassRetain = dlsym(RTLD_DEFAULT, "JSClassRetain");
.
.
.//other similar code
.
}
그것은 또한 @implementation 전에이 같은 방법이있다
JSValueRef (*_JSEvaluateScript)(JSContextRef ctx, JSStringRef script, JSObjectRef thisObject, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception);
JSValueRef JSEvaluateScript(JSContextRef ctx, JSStringRef script, JSObjectRef thisObject, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception)
{
return _JSEvaluateScript(ctx, script, thisObject, sourceURL, startingLineNumber, exception);
}
void (*_JSGarbageCollect)(JSContextRef ctx);
void JSGarbageCollect(JSContextRef ctx)
{
return _JSGarbageCollect(ctx);
}
그래서 내 질문은
1) 모든 사람은 아이폰 응용 프로그램 JavaScriptCore는 사용하여 시도했다입니까? 그렇다면 어떻게?
2) dlsym 메서드는 무엇을합니까?
3) 마지막 작품에서 언급 한 방법은? 예 : void (*_JSGarbageCollect)(JSContextRef ctx); void JSGarbageCollect(JSContextRef ctx) { return _JSGarbageCollect(ctx); }
iOS 앱에서 JavaScriptCore를 직접 사용할 수 없다고 생각합니다. JS를 실행하는 유일한 방법은 UIWebView입니다. 네가 나 한테 물으면 절름발이 야. –
하지만 애플이 소스 코드를 제공하는 이유 http://www.opensource.apple.com/release/ios-40/ iOS 앱에서 사용할 수 없다면? – D25
@Squeegy 더 이상 사실이 아니기 때문에 앱 스토어 용으로 검토 된 코드를 다운로드하지 않는 한 앱에서 통역사를 운영 할 수 있습니다. – Kevlar