dsBridge的調(diào)用原生函數(shù)返回nil的崩潰問題

1.出錯原因:

dsBridge調(diào)用原生方法出現(xiàn)閃退bug,有的是只在release模式下崩潰等問題。dsBridge出錯代碼如下:

當執(zhí)行到ret=action(JavascriptInterfaceObject,sel,arg);語句時,如果原生的函數(shù)返回nil,這樣就變?yōu)閞et = nil;這就是奔潰的原因。具體來講,和調(diào)用方法是否有返回值有關(guān);以前也知道performSelector編譯器不會對對象,方法,進行檢驗,會有內(nèi)存泄露的可能產(chǎn)生;performSelector會把編譯時做的事情放到了運行時期,因為不知道即將調(diào)用的selector是否有返回值,只有到了運行期才去檢測,調(diào)用了返回值為Void的一些函數(shù),相當于直接是 id obj = void,當然是OC語法不允許的,直接崩潰是必然的。

鏈接:http://www.itdecent.cn/p/4a9285c697e7;http://www.itdecent.cn/p/31b38a1369e2

2.解決方法:

定義調(diào)用OC或swift方法時,要返回非nil的值,這樣就不會崩潰了!

如下圖:-> 中的String不要用Void或者可選類型,return一定為不為nil的值。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,621評論 1 32
  • 1.設(shè)計模式是什么? 你知道哪些設(shè)計模式,并簡要敘述?設(shè)計模式是一種編碼經(jīng)驗,就是用比較成熟的邏輯去處理某一種類型...
    龍飝閱讀 2,294評論 0 12
  • 設(shè)計模式是什么? 你知道哪些設(shè)計模式,并簡要敘述? 設(shè)計模式是一種編碼經(jīng)驗,就是用比較成熟的邏輯去處理某一種類型的...
    iOS菜鳥大大閱讀 808評論 0 1
  • 1.設(shè)計模式是什么? 你知道哪些設(shè)計模式,并簡要敘述? 設(shè)計模式是一種編碼經(jīng)驗,就是用比較成熟的邏輯去處理某一種類...
    司馬DE晴空閱讀 1,458評論 0 7
  • 01 上初中時,班上學習成績名列前茅的都是女孩子。但教我們化學的男老師嘴角劃過一絲嘲弄:“初中的知識比較簡單,需要...
    小太陽下的烏龜閱讀 472評論 2 3

友情鏈接更多精彩內(nèi)容