iOS中使用JSPatch框架使Objective-C与JavaScript代码交互

2020-01-15 15:53:45王振洲

在使用block()方法对JavaScript中的Func进行包装时,block(param1,param2)有两个参数,第1个参数设置func中的参数类型,如果有多个参数,使用逗号分割;第2个参数为func函数体。

注意:在block()包装的func中不可以使用self指针,如果需要使用self,需要在block外进行临时变量的转换,示例如下:


defineClass("ViewController", {
      viewDidAppear: function(animated) {
      //run 方法中需要传入一个block
      var slf = self
      self.run(block("NSString*",
              function(str){
              console.log(str)
              slf.log(str)
              }))
      }
      })

在JavaScript中分别使用__weak()与__strong来声明弱引用与强引用对象,例如:


 var slf = __weak(self)
 var stgSef = __strong(self)

5.关于GCD与枚举

在JSPatch中,可以使用如下JavaScript代码来调用GCD方法:


//阻塞当前线程一定时间
dispatch_after(1.0, function(){ 
})
//为主线程添加异步任务
dispatch_async_main(function(){ 
})
//为主线程添加同步任务
dispatch_sync_main(function(){ 
})
//向全局队列中添加任务
dispatch_async_global_queue(function(){ 
})
JSPatch中不可以直接使用Objective-C中定义的枚举,但是可以用其枚举的真实值进行传递。例如:

//UIControlEventTouchUpInside的值是1<<6
btn.addTarget_action_forControlEvents(self, "handleBtn", 1<<6);


注:相关教程知识阅读请移步到IOS开发频道。