1.出錯原因:
dsBridge調用原生方法出現閃退bug,有的是只在release模式下崩潰等問題。dsBridge出錯代碼如下:
當執行到ret=action(JavascriptInterfaceObject,sel,arg);語句時,如果原生的函數返回nil,這樣就變為ret = nil;這就是奔潰的原因。具體來講,和調用方法是否有返回值有關;以前也知道performSelector編譯器不會對對象,方法,進行檢驗,會有內存泄露的可能產生;performSelector會把編譯時做的事情放到了運行時期,因為不知道即將調用的selector是否有返回值,只有到了運行期才去檢測,調用了返回值為Void的一些函數,相當于直接是 id obj = void,當然是OC語法不允許的,直接崩潰是必然的。
鏈接:http://www.lxweimin.com/p/4a9285c697e7;http://www.lxweimin.com/p/31b38a1369e2
2.解決方法:
定義調用OC或swift方法時,要返回非nil的值,這樣就不會崩潰了!
如下圖:-> 中的String不要用Void或者可選類型,return一定為不為nil的值。