JS调用OC的理解与总结

编程入门 行业动态 更新时间:2024-10-09 16:22:57

<a href=https://www.elefans.com/category/jswz/34/1771451.html style=JS调用OC的理解与总结"/>

JS调用OC的理解与总结

首先声明,在这里我只是谈谈对JS调用OC方法的两种方式的理解,并不涉及具体实现,

至于实现的代码网上可以搜到很多。我认为学习任何东西,对概念的理解是应该放在首位的,

有些东西你“吃不透“,主要还是没理解它的概念的缘故。

一.

通过URL截取来调用OC方法:

这种方式中,JS进行跳转的URL可以看成是为OC在JS中注册了一个方法,相当于OC中对应方法的声明。

而OC中通过截取URL获得方法名跟参数,对注册的方法进行实现;

最后在OC中通过perform:selector 调用实现的方法;

总结此方法的整个流程是:JS注册方法名及参数(如果有的话),将方法名跟参数传递给OC,OC实现注册的方法,OC调用OC方法,

其实质还是OC调用OC方法,只不过重要的是JS传递过来的参数,可能是我们所需要的。

由于是在OC中通过perform:selector调用的方法,方法名都是次要的,笔者觉得在OC中定义一个跟URL具有相同多个参数的方法都是可行的。

该方法中URL会有两个方向的用处:(1)可以不进行页面跳转,而只是单纯的触发或者说调用OC中实现的OC方法;

(2)进行跳转,同时执行OC中实现的方法;

二.

JS直接调用OC中的方法;

我之前有发过一篇有关这种方式帖子,具体讲解的实现过程,具体细节可以参看那一篇博文。

之前我的项目的需求是:进行页面跳转时JS触发一个方法,比如paySuccess(),以此来调用OC中的方法,JS中只是注册了一个paySuccess的方法,

它的函数体是空的;当js触发该方法时执行的是 OC中通过对js中context属性进行配置, 而得到的“函数体”。

这个过程由于是动态的页内跳转,所以需要实现WebView的代理方法对网页加载进行监听,通过尝试发现OC对JS方法进行配置的时间切入点是关键;

因为动态加载网页时,OC的配置如果在网页还没有加载完成时配置,由于JS对方法的注册还没有完成,所以不会成功;

如果加载完成之后进行配置,由于网页在加载完成的瞬间会自动触发paySuccess(),而如果我们在webView的加载完成的代理方法中进行配置,开始配置之前其实

paySuccess()方法已经出发了,所以也是失败的。

后来笔者在上边步骤的接触上,在配置完成后通过OC调用JS的方法主动执行JS中触发paySuccess()的时候,结果竟然成功了。

花了这么多口水讲述了我的代码的整个实现的过程,主要是想有利于读的人能很好的理解其中的奥妙。

相信仔细体会,能给大家带来很大收益。

最后说一下JS直接调用OC中的方法的大概流程:

首先js中定义一个具有空的函数体的方法 function paySuccess{logout()};

然后在OC中对JS中的context[logout]=^{ 配置需要执行的OC 代码 };

最后通过[webViewstringByEvaluatingJavaScriptFromString:@"paySuccess();"];

触发JS方法,调用OC中的代码。

通过上边的具体阐述,相信能让大家对JS调用OC中的方法,或者更准确的说执行OC中的代码,能有一个清晰的掌握。

更多推荐

JS调用OC的理解与总结

本文发布于:2024-02-14 02:19:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1761206.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:JS   OC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!