精华内容
下载资源
问答
  • wax

    2019-10-06 01:50:09
    wax https://github.com/probablycorey/waxax is a framework that lets you write native iPhone apps inLua. It bridges Objective-C and L...
    wax

    https://github.com/probablycorey/wax

    ax is a framework that lets you write native iPhone apps in Lua. It bridges Objective-C and Lua using the Objective-C runtime. With Wax, anything you can do in Objective-C is automatically available in Lua! What are you waiting for, give it a shot!

    Why write iPhone apps in Lua?

    I love writing iPhone apps, but would rather write them in a dynamic language than in Objective-C. Here are some reasons why many people prefer Lua + Wax over Objective-C...

    • Automatic Garbage Collection! Gone are the days of alloc, retain, and release.

    • Less Code! No more header files, no more static types, array and dictionary literals! Lua enables you to get more power out of less lines of code.

    • Access to every Cocoa, UITouch, Foundation, etc.. framework, if it's written in Objective-C, Wax exposes it to Lua automatically. All the frameworks you love are all available to you!

    • Super easy HTTP requests. Interacting with a REST webservice has never been eaiser

    • Lua has closures, also known as blocks! Anyone who has used these before knows how powerful they can be.

    • Lua has a build in Regex-like pattern matching library.

    Examples

    For some simple Wax apps, check out the examples folder.

    How would I create a UIView and color it red?

    -- forget about using alloc! Memory is automatically managed by Wax
    view = UIView:initWithFrame(CGRect(0, 0, 320, 100))
    
    -- use a colon when sending a message to an Objective-C Object
    -- all methods available to a UIView object can be accessed this way
    view:setBackgroundColor(UIColor:redColor())
    

    What about methods with multiple arguments?

    -- Just add underscores to the method name, then write the arguments like
    -- you would in a regular C function
    UIApplication:sharedApplication():setStatusBarHidden_animated(true, false)
    

    How do I send an array/string/dictionary

    -- Wax automatically converts array/string/dictionary objects to NSArray,
    -- NSString and NSDictionary objects (and vice-versa)
    images = {"myFace.png", "yourFace.png", "theirFace.png"}
    imageView = UIImageView:initWithFrame(CGRect(0, 0, 320, 460))
    imageView:setAnimationImages(images)
    

    What if I want to create a custom UIViewController?

    -- Created in "MyController.lua"
    --
    -- Creates an Objective-C class called MyController with UIViewController
    -- as the parent. This is a real Objective-C object, you could even
    -- reference it from Objective-C code if you wanted to.
    waxClass{"MyController", UIViewController}
    
    function init()
      -- to call a method on super, simply use self.super
      self.super:initWithNibName_bundle("MyControllerView.xib", nil)
      return self
    end
    
    function viewDidLoad()
      -- Do all your other stuff here
    end
    

    You said HTTP calls were easy, I don't believe you...

    url = "http://search.twitter.com/trends/current.json"
    
    -- Makes an asyncronous call, the callback function is called when a
    -- response is received
    wax.http.request{url, callback = function(body, response)
      -- request is just a NSHTTPURLResponse
      puts(response:statusCode())
    
      -- Since the content-type is json, Wax automatically parses it and places
      -- it into a Lua table
      puts(body)
    end}
    

    Since Wax converts NSString, NSArray, NSDictionary and NSNumber to native Lua values, you have to force objects back to Objective-C sometimes. Here is an example.

    local testString = "Hello lua!"
    local bigFont = UIFont:boldSystemFontOfSize(30)
    local size = toobjc(testString):sizeWithFont(bigFont)
    puts(size)
    

    posted on 2011-11-15 16:43 lexus 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/lexus/archive/2011/11/15/2249912.html

    展开全文
  • WAX安全浏览器是互联网上安全好用的新一代浏览器有着简洁,轻快,安全的特性,愿更多人选择WAX安全浏览器!
  • Add Wax

    2020-12-08 19:17:31
    <div><p>Work in progress, adding <code>wax</code> command</p><p>该提问来源于开源项目:wasmerio/wapm-cli</p></div>
  • WAX 介绍

    千次阅读 2015-11-26 19:33:46
    WAX 介绍

    Wax Lua 是什么?

    Wax 就说实用Lua脚本语言来编写 ios原生应用 的一个框架,它能够使Lua脚本语言和原生的 Objective-C 在 Objective-C runtime里结合起来。
    With Wax, anything you can do in Objective-C is automatically available in Lua!

    Wax 的特点

    Wax Lua的优势(以下部分是网上摘取的):

    1. 开源、免费,遵循MIT协议。项目地址:Wax Lua 以及 alibaba维护的Wax

    2. 可以使用原生API,可以访问所有ios的框架。

    3. Lua类型和OC类型自动转化。

    4. 自动内存管理。

    5. 便捷的Lua模块,使得HTTP请求和JSON解析容易且快速.

    6. 简洁的代码,不再有头文件,数组和字典等语句。

    7. Lua支持闭包,相当强大的功能。

    最著名的就是风靡一时的《Angry Birds》就是使用Wax Lua开发的,不过在2011年开始Wax Lua框架就不在维护了。
    而在 Objective-C这几年一直在更新进步,IOS4引入了block,就有了wax lua的闭包功能,
    IOS5有了ARC,也可以是自动内存管理,自带的NSJSONSerialization和强大的 AFNetworking 也使得
    HTTP请求和JSON解析相当的便捷。

    而我们现在才用的alibaba维护的Wax Lua框架在原来的基础上增加了改进,主要是支持 Objective-C block和支持64位处理器。

    Wax Lua的语法规则

    Wax Lua框架支持在Lua脚本中使用任何OC的类,同样也支持创建类

    使用一个类时,可以直接这样使用:

    -- UIView returns the UIVies class
    -- 创建类时,我们不再需要 alloc, Wax 会自动帮助我们内存管理
    view = UIView:initWithFrame(CGRect(0, 0, 320, 100))
    
    -- Wax不支持OC里面的属性,所以对于OC里面的属性都需要使用如下的方式进行读取和设置
    view:setBackgroundColor(UIColor:redColor())

    定义一个类的时候:

    waxClass{"MyClass", NSObject}

    遵循协议的类

    waxClass{"MyClass", UITableView, protocols={"UITableViewDelegate","UITableViewDataSource"}}

    方法,当我们定义一个方法时,第一个参数必须是 self, 在Wax中调用方法要使用冒号.
    而多个参数的情况下需要以下划线分隔

    function buttonTouch(self, button)
        alertView = UIAlertView:initWithTitle_message_delegate("title", "message", nil)
    end

    Wax能够自动的将Lua语言的 array/string/dictionary 转化为 NSArray, NSString 和 NSDictionary 对象

    images = {"myFace.png", "yourFace.png", "theirFace.png"}
    imageView = UIImageView:initWithFrame(CGRect(0, 0, 320, 460))
    imageView:setAnimationImages(images)
    
    ---由于Wax转化了NSString, NSArray, NSDictionary 和 NSNumber 为 Lua的值,所以有时你需要将其转化回OC
    local testString = "Hello lua!"
    local bigFont = UIFont:boldSystemFontOfSize(30)
    local size = toobjc(testString):sizeWithFont(bigFont)
    puts(size)

    但是Wax对于枚举和结构的支持并不是很好,所以它需要你将用到的枚举和结构按照它定义好的格式添加到
    APP_ROOT/wax/stdlib/enums.lua 和 APP_ROOT/wax/wax-scripts/structs.lua 中,只有这样你才能正常的使用。

    --CGRect 结构体包含 x,y,width,height
    kScreenWidth = UIScreen:mainScreen():bounds().width
    kScreenHeight = UIScreen:mainScreen():bounds().height

    在Wax中使用http请求是比较简单的

    url = "http://search.twitter.com/trends/current.json"
    
    -- Makes an asyncronous call, the callback function is called when a
    -- response is received
    wax.http.request{url, callback = function(body, response)
        -- request is just a NSHTTPURLResponse
      puts(response:statusCode())
    
      -- Since the content-type is json, Wax automatically parses it and places
      -- it into a Lua table
      puts(body)
    end}

    在Alibaba的Wax框架中,支持OC的blocks

    --OC block type is id (^)(NSInteger, id, BOOL, CGFloat)
    local res = luaCallBlock(block, 123456, aObject, true, 123.456);
    
    --or you can call like this:
    local res = luaCallBlockWithParamsTypeArray(block, {"id","NSInteger", "id", "BOOL", "CGFloat"},  123456, aObject, true, 123.456);
    

    Wax 的使用

    可以直接使用 cocoapods 安装,将下面添加到你的podfile中
    pod ‘wax’, :git=>’https://github.com/alibaba/wax.git‘, :tag=>’1.1.0’

    然后你就可以run lua code

    #import "wax.h"
    
    //测试
    wax_start(nil, nil);
    wax_runLuaString("print('hello wax')");
    #import "wax.h"
    #import "wax_http.h"
    #import "wax_json.h"
    #import "wax_xml.h"
    
    //指定相应的lua脚本,以及加载wax lua的http,json等库
    wax_start("init.lua", luaopen_wax_http, luaopen_wax_json, luaopen_wax_xml,nil);

    如果需要重写已经存在的类,只需要使用lua重写该方法,它就会替换该方法,并且可以使用 ORIG 前缀去调用原始方法

    waxClass{"MyController"}
    
    function viewDidLoad(self)
    --before do something
        self:ORIGviewDidLoad()
    --after do something
    end
    

    在Alibaba的Wax框架中,支持将带下划线_的函数,使用UNDERxLINE代替(有点丑,尽量避免在OC代码中使用下划线)

    --OC - (void)_prefixA:(NSString *)a _b:(NSString *)b
    function UNDERxLINEprefixA_UNDERxLINEb(self, a, b)
        self:ORIGUNDERxLINEprefixA_UNDERxLINEb(TEST_VALUE_STRING, TEST_VALUE_STRING)
    end
    
    --OC - (id)__aa_bb_:(NSString *)v1 _cc__dd_ :(NSString *)v2 ___ee___f___:(NSString *)v3
    function UNDERxLINEUNDERxLINEaaUNDERxLINEbbUNDERxLINE_UNDERxLINEccUNDERxLINEUNDERxLINEddUNDERxLINE_UNDERxLINEUNDERxLINEUNDERxLINEeeUNDERxLINEUNDERxLINEUNDERxLINEfUNDERxLINEUNDERxLINEUNDERxLINE(self, v1, v2, v3) 
        return self:ORIGUNDERxLINEUNDERxLINEaaUNDERxLINEbbUNDERxLINE_UNDERxLINEccUNDERxLINEUNDERxLINEddUNDERxLINE_UNDERxLINEUNDERxLINEUNDERxLINEeeUNDERxLINEUNDERxLINEUNDERxLINEfUNDERxLINEUNDERxLINEUNDERxLINE("abc", "efg", "hij")
    end

    wax 架构(以下部分网上摘抄的)

    这里写图片描述

    wax源码中有这样一个文件 wax_helpers/wax_helpers.m ,它提供了一系列的工具方法,包括lua和OC的类型之间的转换,lua中使用_的方法名转化为OC中:的selector,根据lua传递过来的方法名找到对应的 selector 等方法。

    Wax 主要是维护了这样的一个结构,基本上所有与对象有关的操作都是在这个基础上完成的:

    
    //isSuper not only stores whether the class is a super, but it also contains the value of the next superClass.
    
    // It only acts like a super once, when it is called for the first time.
    
    typedef struct _wax_instance_userdata {
        id instance;
        BOOL isClass;
    
        Class isSuper; 
        BOOL actAsSuper; 
    } wax_instance_userdata;

    第一个 instance 就是OC对象的一个指针, isClass 标识这是不是一个类对象, isSuper 用来标识他的父对象,类似以OC中的 isa 指针,这么做是为了在方法调用时子类如果找不到的话就会由此去父类查找, actAsSuper 用来标识这个对象是不是被当做父类来使用, Wax 中一个对象智能被当做父类一次。

    Wax 中还维护了两个表,一个 UserDataTable 一个 StrongUserDataTable 。这两个表中都存储的是 Wax_instance_userdata->instance 为 key , Wax_instance_userdata 为值的键值对。 UserDataTable 是一个值为wake的弱表,他用来存储所有创建的对象,是一个弱引用,他其中就存储了通过lua创建的OC对象,因为是弱表,所以当不在使用时会调用 __gc 这个元方法,进而将该OC对象销毁。 StrongUserDataTable 是一个强引用表他保存的是所有通过 Wax 创建的对象,他不是一个弱表所以需要手动管理内存。也就是说使用 Wax 创建的对象除了会在 UserDataTable 中保存一份以外还会在 StrongUserDataTable 保存一份。

    说到这里就在说一下 Wax 的内存管理, Wax 的内存管理也是基于引用计数的,而且他没有使用 AutoReleasePool 。所有引用计数的操作都在框架里为你实现好了,所以在lua里你不能调用 alloc 方法,而要直接使用 init 方法,因为他会判断你的方法是不是 init 初始化方法,如果是的话 Wax 会帮你调用 alloc 方法。对象的 release 有两种一种是 UserDataTable 中的对象会在 __gc 元方法中 release ,另外一种就是在 Wax 运行的时候有一个定时器timer,不停地轮询 StrongUserDataTable 中的对象的引用计数如果小于2,那么就会 release 。

    Wax 创建类和对象以及方法调用都是通过元方法来实现的。 先来说创建类,就是通过定义的类名以及父类,在运行时通过字符串以及运行时的API创建一个类,通过 class_addMethod() 函数给创建的这个类注册方法,而这个方法的实现就是一个IMP(函数指针),Wax中IMP是这样的一类方法,方法包括lua中用户自己写的function,在OC的层面又对这个function的参数和返回值进行了OC与lua的互转,这两部分组合起来构成一个方法。也就是当调用一个用lua写的方法的时候会首先把参数转化为lua类型然后由 lua_pcall() 调用lua中的方法,完成后再把返回值转换成OC类型的。

    最后说一下 Wax 的方法调用,无论是OC自己的方法还是用户自己写的方法最终都是去调用这个IMP(函数指针),所以在这之前无论是调用OC原生的方法和用户自己定义的方法,处理的方式都是一样的。在元方法 __index 里将方法的调用作为一个closure push到lua中,在元方法 __newindex 中进行方法的override。在closure中的方法调用就和 CCLuaObjcBridge 一样了,都是先获取到 selector ,生成 NSMethodSignature ,然后生成 NSInvocation ,然后调用。与 CCLuaObjcBridge 不同的地方就是由于这个对象是 wax_instance_userdata 中的 instance ,而不是由类名生成的类对象,所以他可以调用实例方法。

    展开全文
  • Added Wax to Toilets

    2021-01-12 02:40:10
    Toilets now yield wax when bashed" <h4>Purpose of change <p>Wax is used in recipes that help very early, like candles and wooden buttons, but is rather hard to come by. This is a relatively easy ...
  • Wax on wax off, can I?

    2020-12-02 03:49:20
    <p>Any new developer, or simply a user that would like to customize the code to match his needs, would probably find much easier to find a bit of wax on it when reading the code. Moreover, in my case ...
  • Develop + Wax merge

    2020-12-09 08:15:25
    <ol><li>Checkout <code>develop</code></li><li>Merge <code>FD-1225_wax_rollup</code> into <code>develop</code></li><li>Resolve all merge conflicts, favoring adopting the wax changes</li><li>Run a diff ...
  • 前情提示:【Wax】使用Wax (非framework方式,XCode 4.6) 这次,将以framework的方式来使用Wax 那么,让我们开始吧!!! 准备工作: 下载wax.framework:...

    前情提示:【Wax】使用Wax (非framework方式,XCode 4.6)

     

    这次,将以framework的方式来使用Wax

    那么,让我们开始吧!!!

     

    准备工作:

    下载wax.framework:https://github.com/downloads/probablycorey/wax/wax.framework.zip

    新建iOS应用项目,使用Empty Application模板,命名为WaxDemo

    Add Files...添加wax.framework,选择“Copy items into destination group's folder”复选框

     

    1、加载lua

    AppDelegate.h文件,导入Wax包头文件:

    #import <wax/wax.h>

     

    AppDelegate.m文件

    方法-(BOOL)application:didFinishLaunchingWithOptions:

    在“[self.windowmakeKeyAndVisible];”和“returnYES;”之间,添加代码:

    wax_start("init.lua", nil);

     

    2、编写lua代码

    新建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, 20, 320, 40))
        label:setColor(UIColor:blackColor())
        label:setText("Hello World!")
        label:setTextAlignment(UITextAlignmentCenter)
    
        self:view():addSubview(label)
    end

     

    运行结果:

     

     

    转载于:https://www.cnblogs.com/dyingbleed/archive/2013/02/25/2931876.html

    展开全文
  • Wax Wax is a framework that lets you write native iPhone apps in Lua. Github地址:https://github.com/probablycorey/wax 准备工作: git clonehttps://github.com/probablycorey/wax.git 打开终端,cd ...

    Wax

    Wax is a framework that lets you write native iPhone apps in Lua.

    Github地址:https://github.com/probablycorey/wax

     

    准备工作:

    git clone https://github.com/probablycorey/wax.git

    打开终端,cd wax

    执行命令:rake install,安装XCode template

    打开XCode,却没有发现Wax的template……Google之后,发现貌似只支持XCode 3

    如此这般,我们只能手动安装Wax了

     

    1、添加文件

    新建iOS应用项目,使用Empty Application模板,命名为WaxDemo

    <WaxDemo>/目录下,新建文件夹wax

    拷贝Wax项目目录下的bin和lib文件夹到<WaxDemo>/wax/目录下

    拷贝Wax项目/xcode-template目录下的Classes和scripts文件夹到<WaxDemo>/目录下

    Add Files...,添加到WaxDemo项目中

    删除wax/lib/extensions/SQLite目录

    删除wax/lib/extensions/xml目录

     

    2、配置

    TARGETS -> Build Phases -> Add Build Phase(位于右下角)

    选择add run script

    然后,在Build Phases下出现了一个Run Script下拉选项

    在Run Script下

    修改Shell栏“/bin/sh”为“/bin/zsh”

    修改Shell栏下文本框内容为:

    "$PROJECT_DIR/wax/lib/build-scripts/copy-scripts.sh"

    在Copy Bundle Resources下

    搜索所有.lua文件,删除除了scripts目录下AppDelegate.lua以外所有的.lua文件

    修改main.m为

    #import <UIKit/UIKit.h>
    
    #import "wax.h"
    #import "wax_http.h"
    #import "wax_json.h"
    
    int main(int argc, char *argv[]) {
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
        
        wax_start("AppDelegate", luaopen_wax_http, luaopen_wax_json, nil);
        
        int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
        [pool release];
        return retVal;
    }

    删除AppDelegate.h和AppDelegate.m文件

     

     

    运行结果:

     

     

    转载于:https://www.cnblogs.com/dyingbleed/archive/2013/02/25/2931861.html

    展开全文
  • wax - 3

    2017-01-03 16:16:29
    wax 学习路线
  • wax - 1

    2016-12-28 16:32:58
    wax搭建环境
  • Error in install WAX

    2020-12-09 02:45:45
    <div><p>Can't install extensions because of "prerequisites that cannot be resolved" VS2017</p><p>该提问来源于开源项目:tom-englert/Wax</p></div>
  • wax - 2

    2016-12-29 17:28:03
    wax . Helloworld.
  • Wax框架简明教程(3)开始使用Wax

    千次阅读 2012-10-08 13:53:42
    概述这是Wax框架的一个快速教程。通过本教程,最终你会明白在OC中使用Wax是多么的有趣。Wax是OC和Lua之间的黏合剂。也就是说,你可以在OC和Lua之间进行通信。通过Wax,使用Lua访问Cocoa类如同在OC中一样简单。 ...
  • WAX安全卫士 v2.01.zip

    2019-07-14 02:57:25
    WAX安全卫士是一款全新出品的简单可信赖的系统工具软件,集合了电脑加速、系统清理、木马查杀和软件管理功能,竭力为用户提供轻巧、快速、智能、纯净的产品体验 WAX安全卫士功能介绍 WAX XP盾甲 补天·加固·...
  • on_wax_client-源码

    2021-02-26 18:53:11
    on_wax_client 构建设置 # install dependencies $ npm install # serve with hot reload at localhost:3000 $ npm run dev # build for production and launch server $ npm run build $ npm run start # generate ...
  • Wax error for Guid value

    2020-12-09 02:45:45
    <div><p>When creating the Wix project file with Wax Setup editor i get the following compilation error: <p>The Component/ attribute's value, '1c3291b8-f364-4d4b-beb0-26f8fa743e78', is a ...
  • Error when creating WAX file

    2020-12-08 23:42:55
    <div><p>I get this error when opening the tool: <p><img alt="image" src="https://img-blog.csdnimg.cn/img_convert/c02298256ffb5f7ff00f46966dff164e.png" /></p><p>该提问来源于...tom-englert/Wax</p></div>
  • <div><p>I added Altova UModel to a project after Wax was already installed and it throws a bunch of errors now. ...
  • <div><p>Hi, <p>I'm trying to get the pointselector (http://mapbox.github.com/wax/pointselector-mm.html) code working on my own site. But when I look at the source ...cutting-room-floor/wax</p></div>
  • wax lua 简介

    2016-01-13 15:49:28
    本文来自于: ... ...Wax 是一个 Lua 与 Objective-C 桥接库。这意味着你可以在 Objective-C 中调用 Lua 代码,也可以在 Lua 中 调用 Objective-C 代码。 在 Lua 中访问
  • oc 转 wax 语法笔记

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 524
精华内容 209
关键字:

WAX