Lua开发ios Native App
来源:互联网 发布:在化工厂附近居住 知乎 编辑:程序博客网 时间:2024/05/29 18:27
起源
其实很早我在参加一个沙龙的时候,就听到了点评的同学在用lua做ab test,虽然那个时候我觉得我自己很牛逼了,但是其实还是啥都没有听懂,直到今天才回过神来仔细看了下这个东西。
Lua(简称撸啊)在iOS中的确被广泛的使用着,在行业中最著名的莫过于魔兽世界(山口山)以及移动互联网的愤怒的小鸟。
Lua在cocos2d以及iOS的应用动态变化上面使用比较广泛,下面我们用两个例子来说明下。
框架
不得不说,最著名的莫过于wax和waxpatch,一个是能够在iOS中使用lua语言编写界面控件,一个是能够动态更新。
Wax是什么?
Wax是一个框架,让你可以用Lua开发原生的iPhone应用。Wax把Lua和Objetive-C的类库连接起来,也就是说,你可以用Lua使用任何的Objective-C类及框架。
为什么使用Wax?
Wax是免费的、开源的。你总是可以改动源代码,以满足自己的需要。
用Lua这种高效脚本语言编写代码可以大大节省时间
可以使用所有现有的Objective-C库
可以让你的App在线更新一些功能,不再需要经过苹果App Store的审核,不过被苹果发现你的应用下载代码的话可能会被拒绝。
2.7 Apps that download code in any way or form will be rejected2.8 Apps that install or launch other executable code will be rejected
新建iOS APP项目,使用Empty Application模板,命名为HelloWax
下载wax.framework:
解压缩wax.framework.zip,将wax.framework添加到项目中,选择“Copy items into destination group's folder”复选框
AppDelegate.h文件,导入Wax包头文件:
# import <wax/wax.h>
AppDelegate.m文件,在application:didFinishLaunchingWithOptions:方法中,添加代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; wax_start("init.lua", nil); return YES;}
项目中新建文件init.lua:
require "ViewController"viewController = ViewController:init()window = UIApplication:sharedApplication():keyWindow()window:setRootViewController(viewController)
项目中新建文件ViewController.lua:
waxClass{"ViewController", UIViewController}function viewDidLoad(self)self.super:viewDidLoad(self)local label = UILabel:initWithFrame(CGRect(0, 120, 320, 40))label:setColor(UIColor:blackColor())label:setText("Hello Wax!")label:setTextAlignment(UITextAlignmentCenter)local font = UIFont:fontWithName_size("Helvetica-Bold",50)label:setFont(font)self:view():addSubview(label)end
先不要急着编译,我们还需要更改一下编译的方式以及确认framework已经被准确导入
运行,搞定,Hello Wax!
关于Wax的语法
Lua中的函数名称不能有冒号。为了补偿这个差异,凡是Objective-C中隔开方法名称的地方,在Lua中都换成下划线。比如说以上程序的 UIFont:fontWithName_size("Helvetica-Bold",50)对应于Objective-C的[UIFont fontWithName:@"Helvetica-Bold" size:50]Lua没有像Objective-C那样的继承体系。Lua中根本没有类。
想通过Lua创建一个Objective-C类,就要使用waxClass{“CLASS NAME”, “PARENT_CLASS”}这个函数。你添加到该Lua文件的所有之后的函数(在同一个文件里面)都会作为实例方法,自动添加到新的类。
waxClass{"ViewController", UIViewController}
Wax不支持Objective-C属性。只能使用View:setFrame(someFrame),不能使用someView.frame。
全部Demo下载
- Lua开发ios Native App
- 使用lua编写iOS native App
- React-Native 开发 android & ios App,共享一份代码
- lua in iOS App
- native app开发小结
- React-Native开发app
- React Native开发APP
- Ios Sample React Native App
- react-native iOS打包APP
- ios--插件开发--借助wax框架使用lua开发原生iPhone App
- 怎样在ios中的Safari内开发出一款类似native app一样的全屏webapp
- React Native, IOS跳转第三方APP
- React native iOS App上架流程
- 移动开发 Native APP、Hybrid APP和Web APP介绍
- React Native---iOS开发学习
- LUA实现iOS APP动态更新
- ionic react-native和native开发移动app
- 从零开始学React Native App开发
- 精准广告系统架构调研
- 安卓逆向学习笔记(5) - 在JNI_Onload 函数处下断点避开针对IDA Pro的反调试
- Android xml资源文件中@、@android:type、@*、?、@+含义和区别
- AOP的简单认识
- poj3436
- Lua开发ios Native App
- 《数字图像处理》——图像退化与压缩编码
- HDOJ 1098 Ignatius's puzzle(数学)
- HDU 3397 Sequence operation
- 装饰者设计模式
- 概念理解(CAP,BASE, ACID)
- 阿J的cocos2d-x学习笔记-元素消消看(四)-可发展的空间及游戏开发中的问题
- 连接池大全
- 红黑二叉树详解及理论分析