1

ストーリーボードの初期ビュー コントローラーは、メソッドを使用して別のビュー コントローラーをperformSegue:withIdentifierロードし、同じメソッドを使用して他のコントローラーをロードしますperformSegue:withIdentifier

ただし、最初のView Controllerも2番目のView Controllerも割り当てを解除していません。どちらも、計測器を介して見られるように、参照カウントが 1 になる傾向があります。

アプリケーションからログアウトしたときに、ユーザーを最初のコントローラーに戻す必要があります。私がこれまでに考え出した唯一の方法は、performSegue:withIdentifierメソッドを使用してユーザーを最初のコントローラーに戻すことです。

ただし、以前のコントローラーの割り当てが解除されないため、同じView Controllerが再作成されることが懸念されます。

ユーザーをログアウトして最初の画面に戻す必要があるため、以前のすべてのビュー コントローラーの割り当てが解除されていることを確認したいと考えています。

4

3 に答える 3

4

プッシュまたはモーダルセグエを実行すると、セグエしているView Controllerが解放されません(また、解放されるべきではありません)。あなたがそれに戻ってポップ/却下したとき、それがまだそこにあるように、それはそれを保持する必要があります。この規則の例外は、分割ビューコントローラーを使用していて、置換セグエを使用する場合です。しかし、それは特別な場合です。

最初のシーンに戻りたい場合、ナビゲーションコントローラーを使用していて、プッシュセグエのみを使用している場合は、を使用できますpopToRootViewControllerAnimated。(iOS 5のターゲットでは、常にナビゲーションコントローラーを使用し、表示したくない場合はナビゲーションバーを非表示にします。そのため、複数のレベルをポップバックできると便利です。同じ効果を得るのは面倒です。モーダルセグエを使用します。)iOS 6では、アンワインドセグエを使用できます。このセグエでは、たとえば、任意の数レベルのシーンをポップ/却下して、最初のシーンに戻ることができます。

于 2013-03-21T14:40:35.397 に答える
3

でループするperformSegueのは良い考えではありません..

VC 階層に戻る必要がある場合は、VC のUINavigationControllerプッシュ/ポップで を使用するか、モーダル VC を提示/破棄する必要があります。をモーダルに提示することで、両方を組み合わせることができますUINavigationController

于 2013-03-21T11:04:03.533 に答える
0

iOS 6 より前の AUIViewControllerは存続しますが、より高価なUIViewものはメモリを節約するために割り当て解除されます。にUIViewController比べて本体自体はかなり軽いUIViewです。iOS 6以降、ドキュメントのオーバーライドに従ってくださいdidReceiveMemoryWarning

UIViewControllerのドキュメント:

メモリ管理

メモリは iOS の重要なリソースであり、View Controller は重要なときにメモリ フットプリントを削減するための組み込みサポートを提供します。UIViewController クラスは、不要なメモリを解放する didReceiveMemoryWarning メソッドを通じて、メモリ不足状態の自動処理を提供します。

iOS 6 より前では、メモリ不足の警告が発生したときに、後で再読み込みまたは再作成できることがわかっている場合、UIViewController クラスはそのビューを消去していました。これが発生した場合は、viewWillUnload メソッドと viewDidUnload メソッドも呼び出して、ビュー階層に関連付けられているすべてのオブジェクトの所有権を放棄する機会をコードに与えます。これには、nib ファイルからロードされたオブジェクト、viewDidLoad メソッドで作成されたオブジェクト、および作成されたオブジェクトが含まれます。実行時に遅延してビュー階層に追加されます。iOS 6 では、ビューがパージされることはなく、これらのメソッドが呼び出されることもありません。メモリが少ないときにView Controllerが特定のタスクを実行する必要がある場合は、didReceiveMemoryWarningメソッドをオーバーライドする必要があります。

あなたが正しく反応し(iOSバージョンに依存します)、ビューの割り当てを解除する限り、ここでは問題はありません。

于 2013-03-21T10:56:38.213 に答える