2017-08-15 20 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が実際に解雇され得ることを示しているが、メモリ使用量が」doesnの適切に下がる。 "Debug Memory Graph"の使用を開始しました。 これは私が得たものの1つの例です: enter image description here ご覧のとおり、私はこれらのメモリリークに関連するヒントを見つけることはできません。私はグラフから何も言えません。

このアプリを使用すると、次のようなメモリリークが発生しました。 CoreFoundation、libswiftCore.dylib、Foundation。

私はちょうど失われており、原因を突き止めるための追加情報がないため、これらのリークをデバッグする方法がわかりません。

PS:私はこのプロジェクトの唯一の開発者ではありません。私は以前の開発者の後で仕事をしていて、悪いコーディング慣行を全面的に見てきました。書き換えは実行可能な選択肢ではありません。

+0

それはメモリが減少しますかどうかを確認するためのアプリにメモリ警告をシミュレートしてみます。解放されたオブジェクトは必ずしもメモリから即座に解放されるとは限りません –

+0

リーキーなView Controllerのための良いテスト:http://holko.pl/2017/06/26/checking-uiviewcontroller-deallocation/。また、サブビューをチェックする場合は、Allocations instrumentとLeaks instrumentを使用します。 –

+0

@YunusErenGüzelあなたは明確にすることができますか?どのように私はメモリシミュレーションを行う必要がありますか?そして、私はいつ正確にアプリケーションがメモリ警告を送信するのか分からない。私はそれが最初に望ましくない巨大なメモリ消費の後にメモリ警告を送るかもしれないのではないかと思います。私は可能な限り早く漏れを捕らえたい。 – Tarek

答えて

0

私は過去にInstrumentsを使用してメモリリークをデバッグしました。インストゥルメントの使い方を知るためにリンゴのドキュメントを読んだところ、最初のセクションは特に役に立ちました:メモリリークを探すには。私は、私がデバッグメモリグラフを使用して把握できなかったリークを発見しました。

Instruments User Guide: Finding Memory Leaks

関連する問題