2016-07-18 14 views
0

私はiOS開発にかなり新しいので、私の質問がstackoverfowになるのにふさわしくないと思われる場合は事前にお詫びします。スウィフト - ガベージコレクション - 何かが残っている

私は、家のViewControllerとゲームプレイのViewControllerを持つ単純なゲームを構築しています。

私は非常に単純な関数を追加して、何も残さないように活動を殺しました。これはゲームプレイのViewControllerを離れる前に呼び出されます。以下は、私が使用しているコードです:

private func cleanThis(){ 

    //removing objects from array 
    activeEnemies.removeAll() 

    //removing objects from array 
    activeTargets.removeAll() 

    //removing the rest 
    let subViews = self.view.subviews 
    for subview in subViews{ 
     subview.removeFromSuperview() 
    } 
} 

私はここで何かが欠けてしなければならない、と私はホームページに移動することなく、それをテストする場合、38メガバイトの一定のメモリアクティビティがあります。私はまだViewControllerに残っているものを監視する方法についてはまだ分かりませんでした。

ご迷惑をおかけして申し訳ありません。

p.s. ViewControllerにオブジェクトがない場合、メモリアクティビティは0にする必要がありますが、これは正しいですか?

+1

スウィフトはガベージコレクションを使用していません。 [Automatic Reference Counting](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html)を使用します。定数メモリは、あなたのアプリが漏れを起こさないという良い指標のようです。メモリの詳細については、Instrumentsでメモリプロファイラを追加してください。 –

+0

Instrumentsを使用すると、メモリを使用しているものを確認できます。 –

答えて

1

iOSはガベージコレクタを使用していません。それはautomatic reference countingと呼ばれるものを使用します。あなたが問題になる主な方法は、循環参照です(AはAに対する強い参照を持つBへの強い参照です)。

Xcode Instrumentsでは、すべてのメモリ割り当てと割り当て解除が表示され、メモリリークも表示されます。

Instruments - Leak Check

関連する問題