2016-08-31 9 views
0

Bascially、現在のVCの現在のナビゲーションコントローラから新しいVCをプッシュしたい。新しいVCにプッシュしている間、新しいVCに値を設定したいと思います。たとえば:プログラムでSegueを実行しているときのiOS View Controllerのライフサイクル

旧VCはパートをプッシュ:

GFRepositoryViewController *reposVC = [[GFRepositoryViewController alloc]init]; 
      reposVC.userName = self.userNameTextField.text; 
      [self.navigationController pushViewController:reposVC animated:YES]; 

新しいVC .hファイル:基本的に

@property (strong, nonatomic) NSString *userName; 

、新しいVCに "userNameに" の値を取得中に問題はありません。しかし、VCのライフサイクルについて質問があります。

新しいVC "GFRepositoryViewController"は古いVCに割り当てられているため、古いVCから新しいVCを指す強いポインタが必要です。そして一度新しいVCにプッシュすると、古いVCを割り当て解除する必要があります。したがって、新しいVCには、それに対する強力なポインタがあるため、割り当てを解除する必要があります。したがって、値 "userName"も割り当て解除する必要があります。しかし、私は新しいVCの値を首尾よく得ることができます。それが私がそれについて興味を持っている理由です。

+0

割り当て解除されません。ナビゲーションスタックにはまだ存在します。ビューコントローラーを閉じると、ビューコントローラーは割り当て解除されます。 –

答えて

1

これらのコントローラのいずれも、UINavigationControllerオブジェクトに埋め込まれているため、いずれも割り当てを解除されていません。 UINavigationControllerの方法

  • initWithRootViewController
  • pushViewController:animated
  • 新しいコントローラ

      NSArrayオブジェクトであるnavigationControllerの viewControllersプロパティに追加されているを使用する場合。それは強い参照のみを保持します。

    関連する問題