bug知悉
- 在開發一款IPad程序時,遇到了一個匪夷所思的問題,最終也雖然解決了貌似,但是還是沒找到問題原因,在此記錄一下。
- xcode的Memory Report中,觀測到app的內存始終以緩慢卻堅定的步伐增加着,但是在使用Leaks工具監測後,並沒有查到內存泄漏,由於自己對xcode和ios開發並不熟練,只能通過笨辦法一點點的排查代碼。
開發環境
- Qt 5.12.7 + mac
- iPad air3
問題排查
- 原程序是c++與QML混合編程的,排查掉所有線程,socket,動態對象生成等可能會出問題的代碼後,發現問題疑似出在QML的動畫效果,定時器身上。
- 使用QML profiler進行調試,沒有監測到內存無故增加。
- Memory Report和Leaks監測,始終緩慢增加。
- 單獨寫了測試demo,發現qml中帶有循環概念屬性的控件都觸發了這個問題(動畫設置循環,定時器設置循環觸發事件,BusyIndicator running:true)。下圖是一個簡單的循環旋轉動畫的demo運行狀態,並且在內存達到極限時程序確實崩潰了。
- 在Windows上測試沒有發現類似問題。
問題解決
- 試了很多方法也沒有解決這個問題,最後聽說qt 發佈了5.x最後一個版本5.15,試了一下,Surprise ,這個問題就這麼解決了。可惜沒搞清楚具體的問題。上一下相同demo,5.15的表現:
- 不知道其他控件會不會有問題,順便期待下6.x。