在移動開發中,與伺服器打交道是不可避免的,從伺服器拿到的介面數據最終都會被我們解析成模型,現在比較常見的數據傳輸格式是json格式,對json格式的解析可以使用原生的解析方式,也可以使用第三方的,我們的項目中使用的是阿裡開源的一個swift編寫的解析框架 HandyJSON。 在使用過程中,使用in ...
在移動開發中,與伺服器打交道是不可避免的,從伺服器拿到的介面數據最終都會被我們解析成模型,現在比較常見的數據傳輸格式是json格式,對json格式的解析可以使用原生的解析方式,也可以使用第三方的,我們的項目中使用的是阿裡開源的一個swift編寫的解析框架--HandyJSON。
在使用過程中,使用instruments的Leak Checks工具對記憶體泄漏進行檢測時發現了這個框架導致了不少的記憶體泄漏,如圖1-1:
這張圖是在APP進入首頁並將數據載入完畢時截取的,可以看到,HandyJSON一共導致了28個記憶體泄漏,如果把整個APP運行一遍,估計記憶體泄漏的個數會很多很多。
在HandyJSON的GitHub上找到了原因點擊前往,是UnsafeMutableRawPointer沒有釋放導致的,解決方法如下:
在Leak Checks工具中顯示了記憶體泄漏的了類名(Measuable)與方法名(_getBridgedPropertyList),我們找到HandyJSON中的這個類和方法,在裡面進行釋放UnsafeMutableRawPointer就好了,在方法中加上圖1-2中的紅框中的代碼即可:
添加完代碼之後,我們重新檢測記憶體泄漏的情況,發現如圖1-3所示:
同樣是進入首頁並將數據載入完畢,我們發現,關於HandyJSON導致的記憶體泄漏已經沒有了。