2016-04-28 4 views
1

私はSpriteKit & GameCentreを使ってXCode7.3でSwift 2.2アプリを作っています。スウィフト無限のメモリの増加

私の問題は、アプリケーションで使用されているメモリが増加し続けていることです(1秒おきに20MB以上が追加されます)。最終的には、これはメモリの問題のためにアプリケーションがクラッシュする原因となります。同様の結果がデバイス(iPhone 6s)&シミュレータで実行されています。

私はInstruments(以下のスクリーンショット)を使って実行しましたが、これは問題を示しているようです。

Instruments screenshot

機器の出力を掘り下げるから、460 KiBのmalloc関数呼び出しをオフに発生するメモリリークを示しているようです。私はスタックトレースからこれを引き起こしているものを分離することはできません。

楽器の出力があります - ここでどのように接続するかはわかりません。どのような提案/ポインタをどこから始めるべきか?

+0

このサイズのバグで、あなたは基本的なレベルで何か間違ったことをやっている良い賭けがあります。あなたのコードで 'malloc'を使っていますか?あなたはそれらを必要とする弱い参照を使用していますか? – Holly

+0

コードはすべてswift2なので、直接mallocコールは使用されません。私が機器の出力を正確に読み取っていると、mallocの呼び出しが繰り返されて実際のリークが発生しています。 – samius

答えて

0

コードをバイナリ検索してみてください。あなたの呼び出しの半分をコメントアウトしてください。まだメモリリークが発生していますか?さて、あなたは検索範囲を半減させました。残りの半分をコメントアウトしてください。メモリリークはありませんか?うーん、問題をコードの1/4に絞り込んだだけです。リークの原因となっている特定のコードを取得し始めると、StackOverflowからさらに便利な解答が得られます。

+0

元の質問の漠然とした謝罪 - 残念ながら私は基本的に固執しています。私は自分のコードを調べて、それぞれのメソッド呼び出しがいつ発生しているかを調べるためにprintステートメントを追加しました。私はコードの塊をコメントアウトしています。私は今、裸の最小限度(私はコードを削除するまでです)にすべてをカットして、メモリリークは加速しました(〜20Mジャンプの代わりに使用されたメモリは現在〜50Mまでジャンプしています) – samius

0

回答が見つかりました - 原因はApple/Spritekitコードのバグです。

シーンの設定の一環として、私はSKViewのshowFieldsをtrueに設定していました。一度これを無効にすると(false)、メモリリークの問題が解消されます。私が見つけたこの探しから

- https://forums.developer.apple.com/thread/27870

関連する問題