|
2011年6月的編程語言排行榜Lua語言一軍突起,一舉進入前十名。這與一年前蘋果決定在ios系統上使用Lua語言密不可分。但是,你了解如何用Lua語言在ios上開發應用嗎?這里將向各位介紹Lua語言的ios應用開發框架Wax,其中在ios平臺上無比火爆的《憤怒的小鳥》就是由Lua語言用Wax開發的。全文共分兩部分,第一部分將帶您深入探討Wax具有的一些好處,同時演示把Lua與Xcode 4和ios軟件開發工具包(SDK)集成起來必不可少的實際步驟。第二部分將逐步介紹如何用Wax構建一個簡單的應用程序,顯示Twitter上的當前趨勢話題列表,可以用按鈕來更新內容。
Wax是什么?
Wax for iPhone這種框架在開發時,旨在把Lua腳本語言和原生Objective-C應用編程接口(API)結合起來。這意味著,你可以從Lua里面,使用任何和全部的Objective-C類及框架。
從技術上來講,Wax結合了Objective-C類和原生C代碼。Lua語言嵌入了C語言,然后Objective-C類并入到其中。
為什么使用Wax?
Wax是免費的、開源的。與其他一些基于Lua的移動開發解決方案不同,Wax是個開源框架,只需要你花一點點時間就可以上手,不需要花錢。不喜歡Wax的工作方式,或者發現實施方面的缺陷?源代碼可免費獲取,你總是可以改動源代碼,以滿足自己的需要。
可以利用原生API。這意味著,為教Objective-C而編寫的教程很容易由Lua for Wax來改動和編寫。這還意味著,你的應用程序在外觀感覺上總是如同原生應用程序,不過又得到了用Lua這種高效腳本語言編寫代碼可以節省時間的好處。
可以使用Xcode。這意味著,模擬器和設備部署都輕而易舉,不會輕易與未來的ios版本決裂。
可以利用所有現有的Objective-C庫。如果你有一個Objective-C類是以前編寫的,不需要改動,就可以將它用在Lua中只要把它放入到Xcode。Three20之類的庫也是一樣。只要按照正常指令來添加庫,就可以使用Lua代碼訪問它們。
可以利用Wax Lua模塊。Wax有幾個內置的Lua模塊,使得異步HTTP請求和JavaScript對象標注(JSON)創建/解析極其容易而快速(因為模塊是用C編寫的)。
沒必要管理內存。不再需要操心內存分配之類的事務。Wax為你處理這一切。
Lua類型自動轉換成對應的Objective-C類型,反之亦然。 這意味著,如果你調用了需要NSString和NSInteger的某個方法,但傳送了Lua字符串和Lua整數,Wax會為你搞定轉換工作。這種轉換功能強大,甚至可以處理復雜的Objective-C特性,比如選擇器。
你可以利用所有上述特性。不需要精挑細選。你獲得所有特性!
OK,實在太棒了!我該如何安裝Wax?
首先你需要Xcode和iPhone SDK。要是你還沒有這些東西,趕緊弄一份!
用Xcode創建項目
我們先創建一個新的基于Windows的項目,名為WaxApplication。別忘了把設備設置成iPhone:
通過Finder瀏覽到你保存該項目的文件夾。創建三個新的文件夾:wax、scripts和Classes。你的文件夾看起來應該像這樣:
設置Wax(第一部分,處理文件)
首先,下載源代碼的壓縮包。Wax放在GitHub上(https://github.com/probablycorey/wax),那樣下載源代碼就很容易。從這里下載壓縮包。
現在,解壓縮剛下載的文件。瀏覽到剛解壓縮的文件夾。它會有probablycorey-wax-124ca46之類的名稱。
你的屏幕現在看起來應該像這樣:
現在,執行下列操作:
◆ 拷貝lib和bin文件夾,把它們粘貼到位于WaxApplication項目文件夾里面的wax文件夾。
◆ 將xcode-template/Classes/ProtocolLoader.h拷貝到WaxApplication項目文件夾。
◆ 拷貝xcode-template/scripts/文件夾,將它放到WaxApplication項目文件夾里面。
◆ 打開WaxApplication項目文件夾里面的wax/lib/extensions/文件夾。刪除SQLite和xml文件夾,下圖所示:
你的屏幕應該看起來像這樣:
設置Wax(第二部分,配置項目)
現在用Finder選擇Classes、scripts和wax文件夾,把它們拖入到Xcode項目中。把它們放到顯示Wax Application和1 target, ios SDK X.X的那個條下方。不要勾選顯示Copy items into destination group’s folder(if needed)的復選框。點擊完成。
現在點擊顯示Wax Application和1 target, ios SDK 4.3的那個條。接著采取下列步驟:
◆ 在右邊窗格中,尋找Targets標題,點擊WaxApplication。點擊Build Phases(構建階段)選項卡。點擊Copy Bundle Resources(復制捆綁資源),清除所有lua文件。
◆ 在右下角,先點擊Add Build Phase(添加構建階段),再點擊Add Run Script(添加運行腳本)。
◆ 將Shell設成/bin/zsh
◆ 將Shell下面的文本區域設成$PROJECT_DIR/wax/lib/build-scripts/copy-scripts.sh。
你的屏幕現在看起來像這樣:
改動main.m
在左邊窗格中,打開名為WaxApplication的文件夾。接下來,打開Supporting Files文件夾。接著,打開main.m,把文件的內容換成如下:
//這是發生奇跡的地方!// Wax并不使用nib文件來裝入主視圖,一切在AppDelegate.lua文件里面完成
#import <UIKit/UIKit.h>
#import "wax.h"
#import "wax_http.h"
#import "wax_json.h"
#import "wax_filesystem.h"
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool =[[NSAutoreleasePool alloc] init];
wax_start("AppDelegate.lua", luaopen_wax_http, luaopen_wax_json, luaopen_wax_filesystem, nil);
int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
[pool release];
return retVal;
}
it知識庫:開發&quot;憤怒的小鳥&quot;的Lua語言:Wax框架詳解,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。