1

これは私たち全員にとって非常に一般的な質問だと思います。私は何時間も勉強してきましたが、若すぎるせいか、まだ解決方法がわかりません。誰かが助けてくれることを願っています。

シナリオは次のとおりです。

  1. ストーリーボードに 3 つのビュー コントローラーがあります (現時点ではいずれもコードに戻っていません)。
  2. 最初のもの(メインのもの)には 7 UIbuttons、 4 UIlabels、および 3UIImagesがあり、それらのどれもまだ h ファイルに接続されていません。
  3. ボタンの 1 つを使用して次のビュー (モーダル) に接続し、2 番目のビューに 1 つのボタンを作成して 3 番目のビューに接続し、最後にビュー 3 にボタンを作成してメイン ビューに接続します。

とてもシンプルに見えます。ただし、instruments/allocation で実行すると、ビュー 3 からメイン ビューに戻るたびに、ライブ バイト (約 1MB) に大きなジャンプがあることがわかります。(要約: これまでのところ、「H」または「M」にはコードがありません)。次に、いくつかのボタンとラベルを削除して、割り当てをやり直しました。ライブバイトはまだ増加していますが、量が少ないとわかります...明らかに、無制限のメモリ増加の問題があります(推測します)。

これが私の質問です。どうすればこれを解決できますか? そして、何も付けていないのに、なぜボタン、ラベル、画像にそれほど多くのリソースを割り当てるのでしょうか?

どうもありがとう!!

PS。レポートに漏れはなく、一定の量で成長しています...

メインビューのボタンでこれを試してビュー2に移動しましたが、もう一度戻ったときにビュー3のメインに戻ることができます...

[self dismissViewControllerAnimated:YES completion:nil];

mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:Nil];

UIViewController *go2= [mainStoryboard instantiateViewControllerWithIdentifier:@"view2"];

[self presentViewController:go2 animated:YES completion:nil];
4

1 に答える 1

2

セグエは常に新しいView Controllerを作成するため、セグエを使用して前のコントローラーに「戻る」ことはありません(アンワインドセグエを使用しない限り)。したがって、実際にはメイン ビューに戻るのではなく、メイン ビューの新しいインスタンスを作成しています。このサイクルを経るにつれて、View Controller がどんどん追加されていきますが、いずれも割り当てが解除されることはありません。これを修正するには、アンワインド セグエを使用してメイン ビューに戻るか、dismissViewControllerAnimated:completion を使用してコードに戻る必要があります。

于 2013-11-03T05:25:35.797 に答える