2011-06-07 76 views
1

我在看幾個lua/objective-c實現,看起來很有希望我想創建一個項目,但有一個例外,我希望能夠在運行時下載腳本。然後我發現這些條款聲明:ios術語和腳本語言

「應用程序不能下載或安裝可執行代碼如果所有腳本,代碼和解釋程序都封裝在應用程序中並且未被下載,則只能在應用程序中使用解釋的代碼。以上內容是由Apple內置的WebKit框架下載並運行的腳本和代碼。「

很清楚你不能在運行時下載任何lua腳本。 如果我解釋正確,你只能運行通過UIWebView下載的JavaScript文件。 所以,如果我想通過uiwebkit(stringByEvaluatingJavaScriptFromString和url編碼)創建一個objective-c/javascript橋樑,我沒有看到任何違反蘋果術語的東西嗎?你認爲這會對性能產生影響嗎?

回答

0

我對通過UIWebView執行Javascript的性能沒有任何經驗,但是我懷疑如果您打算使用細粒度代碼調用stringByEvaluatingJavaScriptFromString,收費會很高。另一方面,沒有什麼能夠阻止你用你需要的所有Javascript代碼加載你的UIWebView中的完整HTML,並且這種方法肯定會確保更好的性能。

實際上,您可以嘗試並遵循另一種方法。實際上可以直接將WebKit Javascript引擎(Javascript核心)嵌入到您的應用程序中。這種方法已經被蘋果「批准」,你可以找到它描述here。 (JavaScript遊戲引擎Impact的創造者Dominic Szablewski是完成此任務的人)。

總之,它歸結爲將Javascript核心編譯爲靜態庫,然後將其鏈接到您的應用程序中。如果您不想自己編譯它,在我發佈的鏈接中,您還可以找到有關如何從Dominic Szablewski許可圖書館的更多信息。 (在這方面,我沒有真正提出任何建議,只是總結信息)。

+0

感謝您的鏈接,我已經找到了particulr的方法,但我希望能夠在運行時下載腳本,這就是爲什麼我最終考慮uiwebview,因爲根據我的理解,您不允許下載以任何其他方式運行代碼,我將不得不在實踐中測試它,我想看看這樣的方法是否可以在性能方面起作用。 – tasos 2011-06-08 10:29:05

+0

嗨,它仍然不清楚這種方式是否符合蘋果的條款。該方案是通過uiwebview有一個JS-> obj-c橋樑,該腳本最初由uiwebview下載,然後我想將它保存爲脫機使用。它就像phonegap平臺,它如何橋接JS-objc以使用本機功能,但例外情況是我想在運行時下載代碼並將它們保存到本地。您認爲是否存在違反條款的情況? – tasos 2011-07-13 16:09:26

+0

這是一個很好的問題......我認爲這應該不是一個問題,因爲:「上述唯一的例外是腳本和代碼下載並由Apple內置的WebKit框架運行。」 - 事實上,您最初依靠WebKit下載它,然後使用WebKit來運行它......但是誰知道...... – sergio 2011-07-13 16:35:32