美文网首页
Lua in iOS

Lua in iOS

作者: hehc08 | 来源:发表于2017-10-15 20:36 被阅读0次

下载和编译Lua解析器

首先,跳转到Lua官网的下载页将源码下载下来。然后解压下载包可以得到如下图所示的目录结构:

image.png

对应的目录说明如下表:

image.png

编译Lua源码

在这里我们只需要src目录中的源码文件,先打开src目录,将Makefile、lua.c、luac.c三个文件删除掉,需要说明的是lua.c和luac.c文件是用于编译生成lua和luac两个命令不属于解析器的功能,如果不删除可能会导致XCode无法编译通过。

接下来打开XCode创建一个新的项目并把src目录拖入项目中。如下图所示:

image.png

然后Command+B进行编译,提示编译成功!

Lua C Api 与 栈

在开始实现Lua与OC交互之前先来了解两个非常重要的概念,一个是Lua的C Api,Lua的脚本解析器是使用C语言来编写的(基于C语言的源码跨平台特性,使得Lua可以在各种系统下面使用),因此它提供了丰富的C语言定义的接口来访问和操作Lua中的所有元素,掌握这些C Api可以更加灵活和方便地扩展Lua的功能,下面的交互实现正是使用这些C Api进行实现的。

另外一个就是栈 的概念,在Lua和C进行交互数据的时候会用到了一个栈的结构,栈中的每个元素都能保存任何类型的Lua值。要获取Lua中的一个值时,需要调用一个C Api函数,Lua就会将特定的值压入栈中,然后再通过相应的C Api将值取出来,如图所示:

image.png

同样,要将一个值传给Lua时,需要先调用C Api将这个值压入栈,然后再调用C Api,Lua就会获取该值并将其从栈中弹出。 如图所示:

image.png

初始化Lua环境

Lua环境的维护需要一个叫lua_State的结构体来支持,其贯穿了整个执行过程。因此,要使用Lua则需要先初始化一个lua_State结构体。修改ViewController的代码如下:

#import "lua.h"
#import "lauxlib.h"
#import "lualib.h"

@interface ViewController ()

@property (nonatomic) lua_State *state;     //定义一个lua_State结构

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.state = luaL_newstate();    //创建新的lua_State结构体
    luaL_openlibs(self.state);        //加载标准库
}

@end

参考链接:
Lua与ObjC的交互

相关文章

  • 用Lua编写iOS程序

    本文讨论用Lua创建iOS应用的3种方法。包括用Lua创建完整的应用(Corona)一直到用Lua作为app中的脚...

  • Lua in iOS

    下载和编译Lua解析器 首先,跳转到Lua官网的下载页将源码下载下来。然后解压下载包可以得到如下图所示的目录结构:...

  • lua in iOS

    其实很早我在参加一个沙龙的时候,就听到了点评的同学在用lua做ab test,虽然那个时候我觉得我自己很牛逼了,但...

  • iOS objective-c中调用Lua方法

    前段时间公司项目中需要用到图片识别算法,需要在iOS中调用Lua方法。 but,从来没有接触过lua肿么办,只知道...

  • 通知中心之 lua 实现

    最近在学 lua, 项目中需要使用消息机制进行模块解耦,因为之前一直在写 iOS, 因此在这里使用 lua 实现一...

  • iOS非游戏引擎下集成Lua与socket,cjson第三方库

    摘要:公司的项目最近要使用Lua进行全平台的解析,iOS的集成在网上已经有了教程,但是lua三方库的集成一直出现错...

  • iOS工程加入cocos引擎

    新建cocos-2d-lua工程(cocos 3.15),新建iOS工程命名为YYZD(Xcode 8.3)。 1...

  • Lua的OOP小例子

    player.lua magician.lua soldier.lua main.lua

  • ios打牌音效和背景音乐消失问题

    ios报牌音效消失 可能是实例占满, 获得的 资源路径不完整 规避方法:AudioEngine.lua ...

  • Python 语言开发 Object-C 程序

    常见支持开发 iOS 的第三方语言 Js 语言 Lua 语言 Ruby 语言(RubyMotion) 怎么用 Py...

网友评论

      本文标题:Lua in iOS

      本文链接:https://www.haomeiwen.com/subject/mpocuxtx.html