iphone - JavaScriptCore Framework / библиотека - PullRequest
0 голосов
/ 28 апреля 2011

Кто-нибудь использовал фреймворк / библиотеку JavaScriptCore в проекте iOS? Я не вижу ни одной такой платформы в списке существующих платформ, поэтому я скачал исходный код с сайта Apple Open Source http://www.opensource.apple.com/release/ios-40/

Теперь я хочу знать, что мне нужно сделать, чтобы интегрировать это в мое приложение. Эти 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 для iPhone? если да как?

2) что делает метод dlsym?

3) как работают упомянутые выше методы? например void (*_JSGarbageCollect)(JSContextRef ctx); void JSGarbageCollect(JSContextRef ctx) { return _JSGarbageCollect(ctx); }

1 Ответ

0 голосов
/ 28 апреля 2011

Вы можете связать JavaScriptCore с вашим приложением, но вы должны включить весь проект в свое приложение. Подробнее см. http://www.phoboslab.org/log/2011/04/ios-and-javascript-for-real-this-time.

...