iOS在线热部署-Bug Fix Online

      想当初,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,先到这里...

你可能感兴趣的:(iOS在线热部署-Bug Fix Online)