0

私はここでサニティチェックを探しています。

ユーザーがメインアプリケーションに入る途中で通過する画面があります。この画面は、システムのほぼどこからでも戻ることができます。

現状では、NavController を使用して管理せずに ViewController を提示しているだけです (画面は必ずしも連続しているか、互いに関連しているわけではないため、ほとんどのアプリには適用できないようです)。

私の質問は、VC1 を表示した後、他の画面に移動し、最後に VC1 を再度表示したい場合、次のようなことをしています。

[self presentViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"VC1"] animated:YES completion:nil];

これはフォームが悪いのでしょうか?大量の VC1 インスタンスを作成してメモリ リークを起こしているのでしょうか、それとも以前に作成したインスタンスを使用する何らかの魔法があるのでしょうか?

フォームが悪い場合、元の VC1 に戻して再利用するにはどうすればよいですか?

ご意見ありがとうございます。

4

1 に答える 1

2

私はあなたがそれを釘付けにしたと思います:同じViewControllerの複数のインスタンスを同時にメモリに入れるのは良い考えではありません。新しいViewControllerをインスタンス化してモーダルに表示するたびに、より多くのメモリを消費します。

最もエレガントなソリューションは、iOS6のアンワインドセグエです。しかし、私たちのほとんどは、まだiOS5のサポートをあきらめたくないでしょう。

iOS 5をサポートする必要がある場合は、ナビゲーションコントローラーの使用を検討できますが、ユーザーインターフェイスでナビゲーションバーが気に入らない場合は非表示にします。次に、モーダルセグエをプッシュセグエに置き換えますpopToRootViewController。これで、メインビューコントローラーに戻りたいときにいつでも実行できます。

于 2012-12-21T19:56:10.153 に答える