美文网首页
dsBridge的调用原生函数返回nil的崩溃问题

dsBridge的调用原生函数返回nil的崩溃问题

作者: 苍眸之宝宝 | 来源:发表于2019-08-20 11:26 被阅读0次

1.出错原因:

dsBridge调用原生方法出现闪退bug,有的是只在release模式下崩溃等问题。dsBridge出错代码如下:

当执行到ret=action(JavascriptInterfaceObject,sel,arg);语句时,如果原生的函数返回nil,这样就变为ret = nil;这就是奔溃的原因。具体来讲,和调用方法是否有返回值有关;以前也知道performSelector编译器不会对对象,方法,进行检验,会有内存泄露的可能产生;performSelector会把编译时做的事情放到了运行时期,因为不知道即将调用的selector是否有返回值,只有到了运行期才去检测,调用了返回值为Void的一些函数,相当于直接是 id obj = void,当然是OC语法不允许的,直接崩溃是必然的。

链接:https://www.jianshu.com/p/4a9285c697e7https://www.jianshu.com/p/31b38a1369e2

2.解决方法:

定义调用OC或swift方法时,要返回非nil的值,这样就不会崩溃了!

如下图:-> 中的String不要用Void或者可选类型,return一定为不为nil的值。

相关文章

网友评论

      本文标题:dsBridge的调用原生函数返回nil的崩溃问题

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