SDWebImage大家都很熟悉了,大部分的APP加載圖片使用的都是這個框架。
但是最近在使用這個框架加載圖片的時候,出現了這樣一個問題“Terminated due to memory issue”。剛開始的時候并不知道是因為圖片的問題,就一直用instrument里面的工具調試了好久。后來才發現,在接口里返回的數據全部是高清大圖,都是好幾兆以上。然后把加載圖片的代碼全部注釋,果然我的猜測是正確的,SDWebImage加載多個網絡高清大圖會導致軟件直接閃退。
接著就是修改歷程了。
圖1
我發現在這里,就是圖1中所標注的1的位置,圖片取出來的時候就已經巨大無比,占用了很大的內存,導致內存來不及釋放就崩潰,因為這里的圖片的處理都是按原大小進行的。(注釋:圖1中所標注的2是后來的修改內容)
知道了問題所在,就可以很方便的修改啦,修改的策略就是如圖1中所標注的2一樣,在這里對圖片進行一次等比壓縮。
我們在UIImage+MultiFormat這個類里面添加如下壓縮方法
圖2
將這個壓縮方法添加完之后,在sd_imageWithData:data這個方法里面調用就可以了(如圖1所示)。
這樣崩潰問題就解決了,是不是很方便呢??
結尾:以上就是關于SDWebImage加載多個網絡高清圖片內存崩潰問題的解決方法,如有不當之處,歡迎指正??
END