先後在iOS的項目中使用的JavaScriptCore框架/庫中的任何一個? 我在現有的框架列表中沒有看到任何這樣的框架,所以我從Apple Open Source站點下載了源代碼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的iPhone應用程序嘗試?如果是的話如何?
2)什麼樣的dlsym方法呢?
3)方法中的最後一個作品如何提及?例如void (*_JSGarbageCollect)(JSContextRef ctx); void JSGarbageCollect(JSContextRef ctx) { return _JSGarbageCollect(ctx); }
我相信你不能直接在iOS應用程序使用的JavaScriptCore。唯一允許的方式來執行JS是一個UIWebView。如果你問我,這真是太可惜了。 – 2011-04-28 09:04:31
但是爲什麼蘋果會提供源代碼http://www.opensource.apple.com/release/ios-40/如果我們不能在iOS應用程序中使用它? – D25 2011-04-28 09:37:31
@Squeegy不再是真的,它們允許你在你的應用程序中運行解釋器,只要它沒有下載代碼後,審查了應用程序商店。 – Kevlar 2011-06-14 17:23:51