美文网首页
利用Aspects实现JS和OC交互

利用Aspects实现JS和OC交互

作者: 丿秋刀鱼的滋味 | 来源:发表于2019-03-13 10:35 被阅读0次

项目需要后台来控制某个控制器下的某个方法,上架前可能显示的内容不符合产品需求又不想重新上传一个二进制文件重新审核。利用后台传过来的js字符串,来修改OC某个控制器中的某个特定方法。此类做法类似于热更新,但是并没有下载更新文件只是获取js字符串。主要原理是利用oc和JavaScript交互,oc的rutime机制来实现替换某个方法。(本人也是刚接触Aspects,如有其他问题请在评论指出)

1.首先这是js文件,打开sublime,保存为js文件格式。

SimpleW_NewsViewController---这个是你想要更改的控制器

setRootVC---这个是你要修改的方法

1---表示方法执行前后顺序

后面的function是替换之后的方法,instance对应的是SimpleW_NewsViewController,invocation对应的是方法setRootVC

var self;

fixMethod('SimpleW_NewsViewController','setRootVC:',1,function(instance,invocation,arg){

          runInvocation(invocation);// 执行原来的function

          self = instance;

          var bottomView = runInstanceMethod(self,'bottomImg');

          runInstanceMethod(bottomView,'setHidden:','0');

          });

// 0 方法执行之后替换方法  1 是方法正在执行的时候替换方法  2 方法执行之前替换方法

fixMethod('SimpleW_NewsViewController','viewDidLoad',0,function(instance,invocation,arg){

          runInvocation(invocation);

          self = instance;

          var bottomView = runInstanceMethod(self,'bottomImg');

          runInstanceMethod(bottomView,'setHidden:','0');

          });

2.调用与实现在Appdelegate里,这里需要用到LYFix这个工具。

string---后台写好的js字符串,格式一定要对,否则运行没效果

        [LYFix Fix];

        [LYFixevalString:string];

相关文章

  • 利用Aspects实现JS和OC交互

    项目需要后台来控制某个控制器下的某个方法,上架前可能显示的内容不符合产品需求又不想重新上传一个二进制文件重新审核。...

  • oc 与js 的原生交互

    参考 总评: oc 与js的交互,1.有原生的方式,oc 调js简单,js调oc 麻烦(协议拦截"实现的交互方式)...

  • 利用JavaScriptCore实现OC和JS交互

    JavaScriptCore JavaScriptCore是webkit的一个重要组成部分,主要是对JS进行解析和...

  • JS与原生OC/Swift相互调用总结

    JS和OC/Swift相互调用,主要总结了JS和OC交互的三种方式1.使用UIWebView,利用JavaScri...

  • OC与JS交互

    OC与JS交互前言 OC与JS交互之UIWebView OC与JS交互之WebViewJavascriptBrid...

  • JS与OC的交互(iOS7前后对比)

    16/07/20 JS与OC的交互 iOS7之前 通过拦截URL的方式实现交互 在iOS7之前,实现js与oc的交...

  • iOS UIWebView 之JS交互

    通过JavaScriptCore实现OC与JS的交互1 OC调用JS 在JS中JavaScript代码如下 2 J...

  • WebViewJavaScriptBridge源码剖析

    WebViewJavaScriptBridge是IOS中JS和OC交互的常用框架,它利用block的形式处理回调(...

  • WKWebView与JS之间的交互

    前段时间项目里使用了UIWebview实现了OC和JS之间的交互,现在我来说一下WKWebView与JS之间交互的...

  • UIWebView

    加载请求 JS和OC互相调用 利用NSInvocation 和 performSelector 实现传递无限参数 ...

网友评论

      本文标题:利用Aspects实现JS和OC交互

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