Кто-нибудь использовал фреймворк / библиотеку 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);
}