2011-04-28 41 views
0

先後在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); }

+0

我相信你不能直接在iOS應用程序使用的JavaScriptCore。唯一允許的方式來執行JS是一個UIWebView。如果你問我,這真是太可惜了。 – 2011-04-28 09:04:31

+0

但是爲什麼蘋果會提供源代碼http://www.opensource.apple.com/release/ios-40/如果我們不能在iOS應用程序中使用它? – D25 2011-04-28 09:37:31

+0

@Squeegy不再是真的,它們允許你在你的應用程序中運行解釋器,只要它沒有下載代碼後,審查了應用程序商店。 – Kevlar 2011-06-14 17:23:51

回答

0

您可以與您的應用程序捆綁JavaScriptCore的,但你必須在您的應用程序的整個項目。有關更多詳細信息,請參閱http://www.phoboslab.org/log/2011/04/ios-and-javascript-for-real-this-time

+0

您提供的鏈接並不能提供有關如何將蘋果提供的代碼組織到iOS的xcode項目中運行的良好信息,而且您必須爲他們更改的jscore付費。 – Kevlar 2011-06-14 17:29:23