在EXC_BAD_ACCESS問題上的處理

? ? ? ? 上星期碰到一個(gè)bug,每次都直接crack到main函數(shù)里,因?yàn)榇a涉及到 imageV.image = image.change() 的問題,隱約知道有可能出現(xiàn)在內(nèi)存問題上,由于某個(gè)功能實(shí)現(xiàn)需要整理,暫時(shí)放了一邊,今天再次碰到,發(fā)現(xiàn)如果不解決會(huì)導(dǎo)致下面的擴(kuò)展實(shí)現(xiàn)不了,確實(shí)要命。


? ? ? ? 既然crack到了main函數(shù),也提示了EXC_BAD_ACCESS這個(gè)錯(cuò)誤,那就Google關(guān)鍵詞EXC_BAD_ACCESS,照著EXC_BAD_ACCESS的本質(zhì)詳解以及僵尸模式調(diào)試原理里的對(duì)了一下,最后對(duì)比代碼,看到錯(cuò)誤涉及到的代碼中的對(duì)象不是OC對(duì)象,所以只能看代碼,因?yàn)橄胫婕皟?nèi)存問題,所以先使用Xcode的靜態(tài)內(nèi)存分析,發(fā)現(xiàn)了以下問題:

? ? ? ? 1、decrement of the reference count of an object that is not owned at this point by the caller


按字面意思,就是release錯(cuò)了,而且Xcode也給了個(gè)箭頭直接標(biāo)出問題所在了,標(biāo)出的第一次說了該對(duì)象是一個(gè)引用計(jì)數(shù)器為0的對(duì)象,那下面就不需要release了

? ? ? ? 2、Potential leak of an object stored into 'maskRef'


按字面意思是創(chuàng)建了一個(gè)引用計(jì)數(shù)器為1的對(duì)象,后面leak說對(duì)象被創(chuàng)建和存儲(chǔ)在了maskRef中,而這些對(duì)象不是OC對(duì)象,只能手動(dòng)release了

最后編輯于
?著作權(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),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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