Swift回調(diào)報(bào)錯(cuò): Thread 1: EXC_BAD_ACCESS解決

13731554972254_.pic.jpg

最近在進(jìn)行之前項(xiàng)目的一個(gè)模塊重構(gòu),之前的代碼和現(xiàn)在的項(xiàng)目很多地方不兼容,包括網(wǎng)絡(luò)請(qǐng)求,請(qǐng)求返回的實(shí)體和回調(diào),另外還有藍(lán)牙讀卡器的錯(cuò)誤的回調(diào),總之改了很多代碼吧,而且之前的代碼邏輯還不敢改,怕寫卡,讀卡有問題。。。。。。

昨天提測(cè)發(fā)現(xiàn)閃退,斷點(diǎn)一看是藍(lán)牙讀卡器的錯(cuò)誤回調(diào)閃退,這。。。。。。一臉懵逼的不知道咋解決,看了好久。。。。。。

大致的原因也都知道,野指針,在對(duì)象被釋放之后又調(diào)用了該對(duì)象,造成了閃退。

最后發(fā)現(xiàn)實(shí)際原因是error as NSError的時(shí)候失敗了,然后再回調(diào)就野指針了。

這個(gè)問題還真是第一次遇見,閉包回調(diào)里的內(nèi)容強(qiáng)轉(zhuǎn)失敗是會(huì)野指針的。只是自己真的看了好久也沒解決,問題轉(zhuǎn)變?yōu)镋rror怎么轉(zhuǎn)NSError回調(diào)出去的問題。因?yàn)樗{(lán)牙讀卡器的代碼是OC寫的,這邊Swift代碼需要拿到錯(cuò)誤信息,奈何里面的錯(cuò)誤信息還是自己封裝的錯(cuò)誤描述。。。。。。

最后還是師傅幫忙解決的,其實(shí)也就改了一句代碼。

// 將 NFC 錯(cuò)誤轉(zhuǎn)成 HDLNFCError
    let nfcError: Error? = {
        if let error = error as NSError? {
            let nfcToolError: HDLNFCCardToolError = HDLNFCCardToolError(rawValue: UInt(error.code))!
            return NSError(domain: "", code: error.code, userInfo: ["errorMessage": HDLNFCError.HDLNFCInnerCardToolError.needRetry(nfcError: nfcToolError).localizedDescription])
        } else {
            return nil
        }
    }()

參考鏈接:

1.崩潰在Block中:
http://www.cocoachina.com/bbs/read.php?tid=1774084

2.Error和NSError的關(guān)系:
http://www.itdecent.cn/p/a36047852ccc

3.NSError橋接:
https://github.com/apple/swift-evolution/blob/master/proposals/0112-nserror-bridging.md

每次遇到自己不能解決的問題的時(shí)候就感覺自己特菜,所以還是說呀,基礎(chǔ)需要好好學(xué)習(xí)。

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

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

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,675評(píng)論 1 32
  • 最全的iOS面試題及答案 iOS面試小貼士 ———————————————回答好下面的足夠了-----------...
    zweic閱讀 2,803評(píng)論 0 73
  • ———————————————回答好下面的足夠了---------------------------------...
    恒愛DE問候閱讀 1,844評(píng)論 0 4
  • 講個(gè)故事,這個(gè)故事想說給你聽,也說給自己聽。 我是在8月底加入行動(dòng)營的,歷經(jīng)22天的磨難,拿回了押金并順利畢業(yè)。和...
    檸檬不酸NM閱讀 600評(píng)論 0 1
  • 當(dāng)鯨魚在海洋中死去,它的尸體會(huì)緩慢沉入海底,這個(gè)緩慢的過程有一個(gè)飽含詩意的名字“鯨落”,你可聽過鯨魚有一種大海賦予...
    各生歡喜一別兩寬閱讀 2,395評(píng)論 0 3

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