概述
这是Wax框架的一个快速教程。通过本教程,最终你会明白在OC中使用Wax是多么的有趣。
NSString -- 返回 NSString
UIView -- 返回 UIView
UITableView -- 下面这一行的“语法糖”
wax.class["UITableView"]-- Wax原生调用,你不必了解
-- 天啊,不需要alloc,retain 和 release了 !
local view = UIView.initWithFrame(CGRect(0, 0,100, 100))
waxClass{"MyClass",NSObject}
-- 声明协议
waxClass{"MyClass",NSObject, protocols = {"UITableViewDelegate","UITableViewDataSource"}}
-- 注意!协议名是字符串形式(因为它们并不是类)REMEMBER!
-- 等同于第2句
waxClass{"MyClass", NSObject}
-- 大括号可以忽略,等同于第1句
waxClass({"MyClass", NSObject}) -- ...omitting the parenthesis ismuch more pretty, so that's how we roll.
waxClass{"MyClass",NSObject}
-- 注意函数第1个参数为self。这就持有了MyClass实例对象
functionstoreWords(self, words)
self.words = words
-- Wax在self对象中创建了一个'super'的成员变量
-- 以便调用父类方法
self.super:words(self)
end
--在Lua中,使用冒号 : 进行方法调用
UIApplication:sharedApplication()
--... 等同于
UIApplication.sharedApplication(UIApplication)
--使用冒号 : 是为了让代码变得简单和可读
在OC中
[UIAlertView initWithTitle:@"title"message:@"message" delegate:nil];
使用Wax
UIAlertView:initWithTitle_message_delegate("title","message", nil)
someView.frame -- 这样不行
-- 只能用 getter/setter 方法
someView:frame()
someView:setFrame(someFrame)
--在Lua中用冒号: 进行方法调用…
localview = UIView:init()
view.someRandomVariable= "YEAH!"
--你能把任何对象赋值给一个实例,它会一直存在
local fileManager =NSFileManager:defaultManager()
local contents =fileManager:directoryContentsAtPath(".")
-- directoryContentsAtPath 返回一个 NSArray, 但 Wax 将之转换为 Lua table
print(contents[1]) --> "info.plist"
-- NSDictionaries 变成 Lua tables
-- NSArrays 变成Lua tables
-- NSStrings 变成Lua strings
-- NSNumbers 变成Lua numbers
-- 如果你这样调用NSString的方法是不行的
local string = "astring"
string:capitalizedString()
-- 这是因为string已经被强制转换为Luastring了
-- 使用toobjc,避免NSString被强制转换为Luastring
toobjc(string):capitalizedString()
wax.struct.create("CGRect","ffff", "x", "y", "width","height")
-- 创建一个全局函数叫做CGRect,带有4个float参数
-- 第2个参数"ffff"定义了4个参数的类型
local rect = CGRect(1, 2, 3, 4)
print(rect.x) --> 1
rect.x = 200
print(rect.x) --> 200
http://blog.csdn.net/kmyhy/article/details/8048091