2011-04-28 3 views
0

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); }

+0

iOS 앱에서 JavaScriptCore를 직접 사용할 수 없다고 생각합니다. JS를 실행하는 유일한 방법은 UIWebView입니다. 네가 나 한테 물으면 절름발이 야. –

+0

하지만 애플이 소스 코드를 제공하는 이유 http://www.opensource.apple.com/release/ios-40/ iOS 앱에서 사용할 수 없다면? – D25

+0

@Squeegy 더 이상 사실이 아니기 때문에 앱 스토어 용으로 검토 된 코드를 다운로드하지 않는 한 앱에서 통역사를 운영 할 수 있습니다. – Kevlar

답변

0

JavaScriptCore를 앱과 함께 제공 할 수 있지만 애플리케이션에 전체 프로젝트를 포함해야합니다. 자세한 내용은 http://www.phoboslab.org/log/2011/04/ios-and-javascript-for-real-this-time을 참조하십시오.

+0

당신이 제공 한 링크는 Apple 제공 코드가 iOS 용 xcode 프로젝트에 어떻게 구성되어야하는지에 대한 좋은 정보를 제공하지 않으며, 변경된 jscore에 대해 비용을 지불해야합니다. – Kevlar

관련 문제