2025年4月12日 星期六 乙巳(蛇)年 正月十三 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Lua

在 Lua 中调用 OC BLock

时间:12-14来源:作者:点击数:4

像 Lua 函数一样调用 BLock

  • --OC block void (^)())block
  • block()
  • --or call it like this
  • luaCallBlockWithParamsTypeArray(block, {"void"});
  • --OC block void (^)(NSString * code, NSDictionary * responseData))response
  • block("abcd", {k1="v1", k2="v2"})
  • --or call it like this
  • luaCallBlockWithParamsTypeArray(block, {"void","id", "id"}, str, {k1="v1", k2="v2"})
  • --OC block CGFloat(^)(CGFloat aFirstCGFloat, BOOL aBOOL, int aInt, NSInteger aInteger, float aFloat, CGFloat aCGFloat, id aId))block
  • local res = block(TEST_VALUE_CGFLOAT, TEST_VALUE_BOOL, TEST_VALUE_INTEGER,TEST_VALUE_CGFLOAT)
  • --or call it like this
  • local res = luaCallBlockWithParamsTypeArray(block, {"CGFloat","CGFloat", "BOOL", "NSInteger", "CGFloat"}, TEST_VALUE_CGFLOAT, TEST_VALUE_BOOL, TEST_VALUE_INTEGER,TEST_VALUE_CGFLOAT)

问:应该什么时候使用 luaCallBlockWithParamsTypeArray

答:当你想调用一个被获取的块时 toblock

  • local blockGotBytoblock = toblock(
  • function(code, responseData)
  • print("lua code=" .. code .. " responseData=" .. tostring(responseData))
  • end
  • , {"void", "NSString *", "NSDictionary *"})
  • luaCallBlockWithParamsTypeArray(blockGotBytoblock, {"void", "NSString *", "NSDictionary *"},
  • "abc", {k1="v1", k2="v2"})

砌体中的一些案例

如果你想这样写OC代码:

  • UIView *view = [UIView new];
  • [self.view addSubview:view];
  • view.backgroundColor = [UIColor greenColor];
  • [view mas_makeConstraints:^(MASConstraintMaker *make) {
  • make.top.equalTo(self.view).offset(200);
  • make.left.equalTo(self.view).offset(50);
  • make.width.offset(10);
  • make.height.offset(10);
  • }];

那么 Lua 代码是

  • local view = UIView:init()
  • self:view():addSubview(view)
  • view:setBackgroundColor(UIColor:greenColor())
  • view:masUNDERxLINEmakeConstraints(toblock(
  • function ( make )
  • make:top():equalTo()(self:view()):offset()(200);
  • make:left():equalTo()(self:view()):offset()(50);
  • make:width():offset()(10);
  • make:height():offset()(10);
  • end
  • ,{"void", "MASConstraintMaker *"}))

注意:你不能写 equalTo(self:view()) or offset(200),因为 equalTooffset 不是一个接受参数的方法,它是一个返回块的方法!

自动测试 中的更多示例。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐