私はiosの開発を初めて行っていますので、無知を許してください。私は、UICollectionViewCellを使用しているときにdequeueReusableCellを呼び出してインスタンス化するか、既存のセルを呼び出すことができることに気付きました。私は、View Controllerに似たものがあるかどうか疑問に思っていました。それとも、アプリケーション内を移動中にビューコントローラの再インスタンス化を不必要に防止する正しい方法は何ですか?instantiateViewControllerを使用しているときのメモリリークの防止
答えて
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と質問が関連しています。質問はちょっと古いですが、あなたの古い答えやあなたのこの質問のいくつかを理解するのに役立ちます。
私はあなたのアプリで無駄な部分をすべて解放してメモリを再利用することを迅速にコントロールするARC(自動参照カウンタ)のようなものだと思います。あなたはこれを気にしてはいけません。これは完全に自動であるためです。あなたのVCがインスタンス化されていて、あなたが別のVCアークに移動した場合、最初のVCへの参照が存在しないため、その割り当てを解除し、その最初のVCへの接続(誤って)アプリケーションのいくつかの(ほとんどの)クロージャーは、接続がまだ存在し、ARCがそれを知っているので、ARCはメモリからそのvcを削除しませんでした - そして、あなたはリークしていて、 Appleが提供するインストゥルメントは正しくあります。
テーブルとコレクションのセルは、多くのアイテムを非常にすばやくスクロールして破棄し、各アイテムのメモリを再割り当てすると効率的でないため、ビューを再利用します。これはビューコントローラには当てはまりませんので、このメカニズムは必要ありません。
ビューコントローラのインスタンスが複数ある場合は問題ありません。メモリリークではありません。
- 1. Graphics.Drawstring()を使用しているときのカラーブリードの防止?
- 2. メモリリークを防止しようとしています
- 3. alphaとgeom_polygonを使用しているときのブレンドを防止する
- 4. Zend_Cache_Backend_Staticを使用しているときのエラーページのキャッシュを防止する
- 5. d3ズーム:タッチスクリーンを使用しているときのページズームを防止します
- 6. NSDictionariesのNSDictionaryを使用しているときのメモリリーク
- 7. プロキシを使用しているときに改造要求を防止する
- 8. WMIを使用してクエリを実行するときのComExceptionsの防止
- 9. NSDateFormatterを使用しているときのメモリリーク
- 10. IEでuploadifyを使用しているときのメモリリーク
- 11. CLLocationCoordinate2Dを使用しているときのメモリリーク
- 12. Silverlightを使用するときのASP.NETセッションタイムアウトの防止
- 13. 'new'を連続して使用したときの割り当て失敗時のメモリリークを防ぐ方法
- 14. make_sharedを使用したコピーコンストラクションの防止
- 15. java.nio.MappedByteBufferを使用するときにOutOfMemoryを防止する
- 16. instantiateViewController:新しいビューを開こうと
- 17. 防止上書き()またはsave.image()を保存使用して
- 18. Artifactoryを使用したデプロイメントの上書きの防止
- 19. OnBeforeUninstallを使用してセットアッププロジェクトのアンインストールを防止する
- 20. トリガーを使用してMySQLのコード挿入を防止する
- 21. Javaを使用してswfのキャッシュを防止する
- 22. jqueryを使用してデフォルトの動作を防止する
- 23. DocumentTermMatrixを使用しているときの小文字変換を防止します
- 24. Stripes Interceptorを使用して他のサーブレットへのアクセスを防止
- 25. Jquery dotdotdotを使用して切り捨てるときのフルテキストの点滅を防止します
- 26. テキストキー付きハッシュテーブルを使用しているときにメモリリークが発生する
- 27. jqueryを使用してURLのコピーと貼り付けを防止する
- 28. メモリリーク使用してsqliteの
- 29. JavaScriptを使用したスパムとボットの防止チェックボックス
- 30. codeigniterでphpとmysqlを使用した重複エントリの防止