Giter Club home page Giter Club logo

objc2lua's Introduction

Objc2Lua

##限制:

  • 它不保证生成完全可执行的lua文件,仍需要程序要人工后期处理(例如需要自行添加WaxClass的头描述,对宏的处理,和一些转换错误的语法进行人工修正转换等等)

  • 它不完全支持C/C + +的语法(可能会出现相关语法无法识别或者转换错误,到时候请手动转换,而且LUA并不支持直接调用C方法,仍需要在OC封装一层)

  • 它不合并Categories(请手动将Catergory合并到同一个lua中)

  • 它不支持协议的转换(程序不会对协议进行转换输出)

  • 它对宏不进行太多处理,所以宏仍需要程序员自行处理,但会提取出可以的宏作为注释放到LUA开头

  • 它不完全支持Block(Block转换后会提示不支持)

  • 不完全的For循环转换(主要在循环体部分,需要人工改写,例如使用i=1,100,1或paris循环等)

  • 可能会出End不匹配的现象(可能出现在Switch,For,If等语句的转换上,如果{}都写的话的话应该会匹配,主要出现在没有只有一行时省略{}的情况)

##支持:

  • 自动将消息调用转成WAX的形式

  • 自动将方法声明转换成WAX的形式

  • 自动将对属性的操作转换成对应的get/set方法调用格式

  • 自动将switch转换成if-elseif嵌套的方式,但不完美需要可能需要人工校对

  • 自动将do-while转换成repeat-until形式

  • 自动将if,For等语句进行转换,但由于Lua与OC的语法不同,所以仍然需要人工校正

  • 支持@[],@{}的语法糖,并自动转换为LUA中的Table表述形式

  • 自动判断可能的宏定义和宏函数,添加到文件中(在文件最后以注释的形式添加),便于手工查找并修改

  • 自动将CGSizeMake->CGSize(还有一些其他wax支持的结构体如CGRect等)

  • 还有其他一些细节就不一一列举了

##其他说明:

  • 对OC中_XXX的变量不做转换(可以自行替换为self.xxx的形式或其他变量声明形式,但依旧不提倡使用self.xxx,该方法存取变量的性能开销较大,能使用local请尽量使用local)

  • 宏的识别暂时为以下三种

    1.k+大写字母+任意字符

    2.AAA_BBB_CCC类似的形式

    3._+纯大写

##需要预处理:

1.Block(如果能替换成非Block方法或注释掉最好,不替换也行,但会提示不支持)

2.多线程,现WAX还不支持多线程,所以如果有用到GCD或其他多线程的地方也需要进行处理

3.纯C\C++方法

特别注意:如果语句最后不是分号,一定要加上分号,否则会影响识别的!!!

##转换完之后仍然需要人工校对,以下方面需要特别关注:

1.For

2.Switch

3.IF

4.所有使用到宏的地方

5.转换时提示报错的地方

6.依然建议逐行校对,防止转换失误

7.建议将一些结构使用LUA中的table之类的代替,以减少使用WAX带来的性能损失,并能用local变量的请尽量用local变量

##使用方法:

1.安装JRE或者JDK

2.双击运行jar包

3.选择要转换的目录,程序会自动转换该目录下的所有.m文件

4.生成的文件在同目录下扩展名为.lua

5.相关报错会在开始按钮下方的控制台输出

##特别感谢以下开源程序:

https://github.com/yahoojapan/objc2swift

https://github.com/bang590/JSPatchConvertor

https://github.com/irclark2000/ObjcToJava

##jar文件 Java/classes/artifacts/Objc2Lua_jar目录下

objc2lua's People

Contributors

consoar avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.