1. 程式人生 > >移除KVO的風險

移除KVO的風險

ans 項目 targe lan 刪除 判斷 移除 nbsp 分享圖片

為之前項目添加一個功能用到了一個開源庫XMTextView,然後運行報錯提示:

技術分享圖片

顯示沒有註冊一個叫font的觀察者,所以閃退。但是我的UITextView沒有添加觀察者呀,怎麽會刪除呢?

原來是由分類引起的,看下XMTextView中的分類:

技術分享圖片

分類中交換了方法,那麽所有的UITextView在釋放時都要調用swizzleDealloc方法,而swizzleDealloc方法直接刪除font觀察,那麽對於一個沒有添加font的觀察者的話就會crash。因此在移除時要麽判斷是否已經釋放,要麽捕捉異常不要讓程序閃退,基於這個思路網上有多種解決方案:

https://www.jianshu.com/p/6c6f3a24b1ef

移除KVO的風險