2016-08-27 12 views
2

私はSwiftでゲームを作ったし、シングルとマルチプレイヤーモードがあり、アプリが150を占めているのでメモリ管理に問題があるようだMBと私は理由が分かりません。 xcodeのメモリデバッガは、マルチプレイヤーゲームを選択すると15の問題があることを示していますが、シングルプレイヤーモードではリークはなく、それでも150 MBの使用量を示しています。 ここでは、デバッガの実際のスクリーンショットを示しています。これらの三角形、円、およびロムのすべてのヘルプに感謝します。ありがとうございます。 enter image description herexcode(Swift 3)でメモリリークを修正する方法

答えて

2

強い参照サイクルのように見えます。 通常、これはクロージャで使用するオブジェクトをweakとして宣言しないと発生します。 強い基準周期が何であるかを理解するために、次のリソースを参照してください

  1. Blog post about strong reference cycles
  2. WWDCのビデオを利用できる(例えばherehere

WWDCのビデオがあるが、少し古い、主なアイデアはまだ同じです。少なくとも2つのオブジェクトは、(推移的に)強いの参照を保持しています。両方が解放されたとき(例えば、GameSceneが割り当て解除されたとき)、それらは依然として互いにポイントするので、システムは割り当てを解除できません。

通常、あなたはクロージャのコンテキストで強い参照サイクルを取得:

myMethod(...) { (param1, param2) in 
    self.myVariable = ... 
} 

あなたのコードでは、このような構造を持っている場合は、自己weakを作ってみます。すなわち

myMethod(...) { [unowned self] (param1, param2) in 
    self.myVariable = ... 
} 

私はコードが表示されないので、問題がどこにあるか私は正確に見ることができないが、それはあなたがあなたの辞書に強い基準周期を持っているようです。その後、クロージャの問題ではないかもしれません。

+0

ありがとうございました、今私は参考文献について読んでいます。以前に言及した問題にもかかわらず、私はRAM使用の問題は完全に別の話だと思う。シングルプレイヤーモードでは問題はなく、それでもRAMが多すぎるからだ。どのくらい多くのRAMを使用しているかを調べる方法はありますか?私は問題がイメージではなく、サイズではないと思っています(最大500 KBです)が、解像度ではあります。私は今これについての詳細な情報を探しています。あなたが良い資源を知っていれば、それを歓迎します!ありがとう! – i6x86

+0

割り当てリストはあなたが探しているものかもしれません:https://www.raywenderlich.com/97886/instruments-tutorial-with-swift-getting-started – slashburn

関連する問題