想当初,iOS应用提交一个版本后,就会进入漫长的等待期,快则半个月,慢则可能长达1个月之久,万一“被拒”一下下,那么估计真的悲剧了(>﹏<)。2015年末2016年初,明显的感觉Apple的审核团队开始认真了,审核期就变成了1个星期左右。到了2016年的5月,iOS开发者的福音,审核期快速到24-48小时,确实不错,O(∩_∩)O哈哈~
今天这里最要是介绍一款在iOS的热部署,虽然现在审核时间减短到了1天,但是万一在线上有非常严重的BUG或者发小版本会影响到后续发版,那么来一个热部署也可以立即解决问题。当然,也可以此功能对线上的App进行功能开发(新增功能),不过代价会有点大,一般不建议这么做。
OK,进入正题。
Pod引入:
pod'wax', :git=>'https://github.com/JxbSir/wax.git', :tag=>'1.2.0'
头文件引入
#import "wax.h"
执行代码
wax_start(nil, nil);
inti = wax_runLuaString("print('hello wax')");
//or
inti = wax_runLuaFile(path.UTF8String);
if(i){
NSLog(@"error=%s", lua_tostring(wax_currentLuaState(), -1));
}
重写函数
waxClass{"TestDebugVC"}
//多类的话可以写在一个lua文件,但是必须与waxClass分模块来写
function viewDidLoad(self)
--调用父类
self.super:viewDidLoad();
--调用原始类中的已实现函数
self:ORIGviewDidLoad();
--设置背景颜色
self:view():setBackgroundColor(UIColor:redColor());
--打印log
print("IN")
end
添加函数
//添加新函数
function addAction(self,str)
print(str);
end
成员变量与属性的使用
self:setMyProp("prop");
print(self:myProp());
_myMember ="myMember";
print(_myMember);
局部变量的使用
//使用local关键词
local testString ="Hello lua!";
local bigFont = UIFont:boldSystemFontOfSize(30);
//使用local变量时,可能需要使用toobjc强制转换
local size = toobjc(testString):sizeWithFont(bigFont);
如何使用Block
详细可以访问: https://github.com/alibaba/wax/wiki/Block
//UIViewAnimation例子
UIView:animateWithDuration_animations_completion(1,
toblock(
function()
label:setCenter(CGPoint(300, 300))
end
),
toblock(
function(finished)
print(tostring(finished));
print('lua animations completion');
end
,{"void","BOOL"})
//这里第一个值为block的返回值,后面接上的是block中参数的类型
)
//使用JxbFramework的http接口列子 -》https://github.com/JxbSir/JxbFramework
XBApi:SharedXBApi():requestWithURL_paras_type_success_failure("http://www.baidu.com",nil,3,
toblock(
function(task,result)
local len = string.len(result)
print(len)
end,{"void","id","id"}),
toblock(
function(error)
print("failure");
end,{"void","NSError"})
);
防止循环引用
block外:local weakSelf = self; --temp self
block内:weakSelf = nil; --make it empty
最后提供一款objective-c转wax的xcode插件工具:
https://github.com/JxbSir/JxbWaxConvertTool
OK,先到这里...
网友评论