2017-08-15 44 views
0

我正在研究一個應用程序,它有可怕的內存泄漏。 我到目前爲止所觀察到的是我使用應用程序越多,消耗的內存就越多。我最初認爲這可能是它的導航處理方式。我們用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得到實際上駁回但是內存使用量沒有按」適當地下降。 現在我開始使用「調試內存圖」。 這是一個例子,我得到了什麼: enter image description here 正如你看到的,我無法找到任何暗示什麼的內存泄漏有關。我無法從圖表中分辨出什麼。

使用該應用程序越來越多,給我以下相關的內存泄漏: CoreFoundation,libswiftCore.dylib和Foundation。

我只是太失落,我不知道如何使用,因爲沒有額外的信息來幫助我查明原因/快捷文件導致了泄漏調試這些泄漏繼續。 PS:我並不是這個項目的唯一開發者。之前的開發人員之後,我幾乎完成了這項工作,並且我在各地都看到了糟糕的編碼習慣。重寫不是一個可行的選擇。

+0

嘗試模擬內存警告到應用程序,看它是否會降低內存。發佈的對象不一定立即從內存中釋放。 –

+0

泄漏視圖控制器的一個很好的測試:http://holko.pl/2017/06/26/checking-uiviewcontroller-deallocation/。另外,如果檢查子視圖,請使用「分配」工具和「泄漏」工具。 –

+0

@YunusErenGüzel你能澄清一下嗎?如何以及在哪裏我應該做記憶模擬?我不知道應用程序何時會發送內存警告。恐怕它可能會在內存耗盡之後發出內存警告,這在第一時間是不受歡迎的。我想盡早捕獲泄漏。 – Tarek

回答

0

在過去,我用Instruments來調試內存泄漏。我閱讀了蘋果文檔來弄清楚如何使用樂器,這非常有幫助 - 特別是第一部分:查找內存泄漏。我發現泄漏,我無法使用調試內存圖找出。

Instruments User Guide: Finding Memory Leaks