2017-04-16 5 views
0

私はiosの開発を初めて行っていますので、無知を許してください。私は、UICollectionViewCellを使用しているときにdequeueReusableCellを呼び出してインスタンス化するか、既存のセルを呼び出すことができることに気付きました。私は、View Controllerに似たものがあるかどうか疑問に思っていました。それとも、アプリケーション内を移動中にビューコントローラの再インスタンス化を不必要に防止する正しい方法は何ですか?instantiateViewControllerを使用しているときのメモリリークの防止

答えて

0

navigationController iPhoneには設定>>一般>>についての情報があります。

設定にいるときは、GeneralVCが読み込まれません。 Generalに行くと、SettingVC & GeneralVCがありますが、AboutVCはありません。 Aboutに行き、Generalに戻った場合、AboutVCは完全に割り当てが解除されます。

navigationControllerの場合、viewControllerをロードするたびにviewDidLoadが呼び出されます。 tabBarControllersについては


、あなたの電話のアプリケーション、すべてのタブのような(お気に入り、更新ムービー、連絡先、キーパッド、ボイスメール)は、メモリに常にあります。彼らは割り当てを解除されません。 KeypadVCを使用している場合、他のすべてのVCはまだメモリ内にあります。 viewControllerをロードするたびにtabBarControllersに対して、viewWillAppearが呼び出されます。 viewDidLoadは、初めて読み込まれるときに呼び出されます。

あなたが何をしているか(tabBarControllerまたはnavigationcontroller)に応じて、viewControllerはあなたが離れた後に存在しても存在しなくてもかまいません。

さらに、this comment threadと質問が関連しています。質問はちょっと古いですが、あなたの古い答えやあなたのこの質問のいくつかを理解するのに役立ちます。

0

私はあなたのアプリで無駄な部分をすべて解放してメモリを再利用することを迅速にコントロールするARC(自動参照カウンタ)のようなものだと思います。あなたはこれを気にしてはいけません。これは完全に自動であるためです。あなたのVCがインスタンス化されていて、あなたが別のVCアークに移動した場合、最初のVCへの参照が存在しないため、その割り当てを解除し、その最初のVCへの接続(誤って)アプリケーションのいくつかの(ほとんどの)クロージャーは、接続がまだ存在し、ARCがそれを知っているので、ARCはメモリからそのvcを削除しませんでした - そして、あなたはリークしていて、 Appleが提供するインストゥルメントは正しくあります。

0

テーブルとコレクションのセルは、多くのアイテムを非常にすばやくスクロールして破棄し、各アイテムのメモリを再割り当てすると効率的でないため、ビューを再利用します。これはビューコントローラには当てはまりませんので、このメカニズムは必要ありません。

ビューコントローラのインスタンスが複数ある場合は問題ありません。メモリリークではありません。

関連する問題