当前位置:编程学习 > wap >>

Wax框架简明教程(1) 简介

一、什么是Wax

Wax是一个用lua语言编写本地iPhoneapp的框架。它使用OC运行时将OC和Lua进行绑定。通过Wax,你可以用Lua做任何OC可以做到的事情!你还等什么?赶快开始吧!

 

二、为什么用Lua编写iPhoneapp?

我喜欢写iPhone app,但仅限于使用动态语言而不是用OC来写它们。为什么许多人宁愿用Lua+Wax而不是OC?有以下几个原因:

q垃圾自动回收!alloc、retain和release的日子终于一去不复返了!

q更少的代码!不再有头文件,不再有静态类型、数组和字典语句!Lua使你的代码行数减少。

q能访问Cocoa、UITouch、Foundation这些框架,每一样都不少!Wax会将OC框架自动暴露给Lua,你想要的每个框架仍然是有效的!

qHTTP请求更简单。与RESTwebservice进行交互从来没有这么容易过!

qLua支持闭包,即块语句!如何使用过它们的人都知道它们是如何的强大。

qLua内置了正则表达式匹配库。

三、例子

关于Wax app的简单示例,请看examples文件夹。

 

如何创建UIView并设为红色?

 

--忘掉alloc吧!内存由Wax自动管理

view= UIView:initWithFrame(CGRect(0, 0, 320, 100)) 

--用冒号向OC对象发送消息

--所有UIView对象的方法都可用这种方法访问

view:setBackgroundColor(UIColor:redColor())

 

如何调用多个参数的方法?

 

--在方法名中加入下划线连接参数,然后象使用正常的C函数一样使用

UIApplication:sharedApplication():setStatusBarHidden_animated(true,false)

 

如何传递array/string/dictionary参数?

 

--Wax自动转变array/string/dictionary为NSArrayv/NSString/vNSDictionary对象(以及逆转换)

images= {"myFace.png", "yourFace.png", "theirFace.png"}

imageView= UIImageView:initWithFrame(CGRect(0, 0, 320, 460))imageView:setAnimationImages(images)

 

如何创建一个UIViewController子类?

 

--在"MyController.lua" 中创建

--创建一个OC类MyController,继承自UIViewController

--这其实是一个OC对象,如果有必要的话,你甚至可以在OC代码中引用它

waxClass{"MyController",UIViewController} 

functioninit()  

--要调用父类方法,显式地使用self.super

self.super:initWithNibName_bundle("MyControllerView.xib",nil)  

returnself

end 

functionviewDidLoad()  

--在这里写入其它代码

end

 

你说HTTP调用会很轻松,我才不信呢…

 

url= "http://search.twitter.com/trends/current.json" 

--异步调用,当收到应答调用回调函数

wax.http.request{url,callback = function(body, response) 

--发出NSHTTPURLResponse 请求 

puts(response:statusCode())   

--由于content-type为json, Wax 会自动解析并将之封装到Luatable类型

puts(body)

end}

 

因为Wax会自动将NSString,NSArray,NSDictionary和NSNumber转换为原生的Lua值,有时候你必需强制转换回OC对象,例如:

 

local testString ="Hello lua!"

local bigFont =UIFont:boldSystemFontOfSize(30)

local size =toobjc(testString):sizeWithFont(bigFont)

puts(size)

补充:移动开发 , IOS ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,