我正在研究一個應用程序,它有可怕的內存泄漏。 我到目前爲止所觀察到的是我使用應用程序越多,消耗的內存就越多。我最初認爲這可能是它的導航處理方式。我們用Objective C.在其斯威夫特文件(頭處理)滑動菜單框架添加以下代碼:iOS Swift - 調試內存泄漏
if let app = UIApplication.shared.delegate as? AppDelegate, let window = app.window {
if let viewControllers = window.rootViewController?.childViewControllers {
for viewController in viewControllers {
print("" + viewController.debugDescription)
}
}}
打印功能表示所有viewControllers得到實際上駁回但是內存使用量沒有按」適當地下降。 現在我開始使用「調試內存圖」。 這是一個例子,我得到了什麼: 正如你看到的,我無法找到任何暗示什麼的內存泄漏有關。我無法從圖表中分辨出什麼。
使用該應用程序越來越多,給我以下相關的內存泄漏: CoreFoundation,libswiftCore.dylib和Foundation。
我只是太失落,我不知道如何使用,因爲沒有額外的信息來幫助我查明原因/快捷文件導致了泄漏調試這些泄漏繼續。 PS:我並不是這個項目的唯一開發者。之前的開發人員之後,我幾乎完成了這項工作,並且我在各地都看到了糟糕的編碼習慣。重寫不是一個可行的選擇。
嘗試模擬內存警告到應用程序,看它是否會降低內存。發佈的對象不一定立即從內存中釋放。 –
泄漏視圖控制器的一個很好的測試:http://holko.pl/2017/06/26/checking-uiviewcontroller-deallocation/。另外,如果檢查子視圖,請使用「分配」工具和「泄漏」工具。 –
@YunusErenGüzel你能澄清一下嗎?如何以及在哪裏我應該做記憶模擬?我不知道應用程序何時會發送內存警告。恐怕它可能會在內存耗盡之後發出內存警告,這在第一時間是不受歡迎的。我想盡早捕獲泄漏。 – Tarek