アプリでメモリの問題に直面しています。
私はナビベースのアプリを持っています。すべてのコントローラーを押したり、ポップしたり、押したりすると、メモリの過負荷のためにアプリが閉じます。
それは私たちが保持サイクルと呼んでいるものだと思います:
私はカスタムナビゲーションコントローラーを持っています: MyNavController
、このコントローラーは私のルートコントローラーであり、メインをプッシュしUIViewController
ます: MyMainController
、アプリがアプリを起動すると、約130 MBのメモリが使用され、新しいコントローラーをプッシュすると、メモリは160になり、ポップしますこのコントローラー:メモリはまだ160(正確には159)であり、別のView Controllerをプッシュします:メモリは190 MBまで増加します...メモリは決してダウンしません。
それが保持サイクルであることを確認できますか?
ビューコントローラーをポップするときに間違っていなければ、メモリはビューコントローラーのメモリサイズを減らす必要がありますか?
私は常にプロパティ (ボタン、ビュー、customView、customObject...) にストロングを使用しますが、第 2 レベルのコントローラーの dealloc メソッドにブレークポイントを設定すると、それが呼び出されることがわかっているので、コントローラーを解放する必要がありますか?
私は何かを試してみました:私は空
UIViewController
を作り、xib のビューをリリースされていないコントローラーの 1 つに設定しました。カスタムコードは何もありません。このコントローラーを押すとメモリが上がり、ポップしてもメモリは下がりません! 何を探す必要があるのか本当にわかりませんMainViewController
。またはコントローラーでスタックをプッシュしますか?
次を使用してコントローラーをロードするだけです。
GeoControllerViewController *aGeoController = [[GeoControllerViewController alloc] initWithNibName:@"GeoControllerViewController" bundle:nil];
aGeoController.dictionnaryModele = _dicCours;
[self.navigationController pushViewController:aGeoController animated:YES];
前もって感謝します。