alibaba/wax

OC 调用 lua class

Closed this issue · 3 comments

看了一下example工程,似乎只有 lua call OC的路径,没有OC call lua class的路径,就是类似于:

lua:

waxClass{"TwitterTableViewController", UITableViewController}
...

OC:

UITableViewController * vc = wax_instance_from("TwitterTableViewController");
[self.navigationController pushViewController:vc animated:NO];

Class cls = objc_getClass("TwitterTableViewController");
id vc = [cls new];
[self.navigationController pushViewController:vc animated:NO];

@y138828 我问题的意思是需要作者提供一个友好的接口,至于这种写法大家都会写

这个库确实实现了OC访问Lua创建的类的特性,然而,却不实用。因为,OC编译的时候无法得知Lua创建了什么类,有什么方法。OC需要通过字符串来访问Lua的类,通过NSSelectorFromString来访问方法。我能想到的一个可能的用法是,OC先定义了一个protocol,Lua实现创建类实现这个protocal,这样OC那边的编程才能自然的使用。
或者,另外一个场景:
原本OC中定义的一个ViewController,它有一个UITableView的对象,原本ViewController是作为UITableView的代理人的,通过在Lua实现另外一个代理人类,并且通过替换方法,把UITableView的代理人方法替换成新的类对象。