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

项目地址:https://github.com/probablycorey/wax

 

一、什么是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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值