0

私の質問は、「これを行う方法」よりも「大丈夫ですか」です。私は、navigationViewController に基づく単純なアプリを持っています。別のviewControllerBをスタックにプッシュしているviewControllerAがあります。

-(void)buttonPressed{
  ViewControllerB * nextView = [ViewControllerB alloc] init];
  nextView.lastView = self;
  [self.navigationViewController pushViewController:nextView animated:YES]; 
}

次に、新しい viewControler で、最初の viewControler のフィールドに値を与えています。

lastView.dataString = @"ABC";

したがって、viewControllerA が閉じると、viewControllerA のフィールドの値が変更されます。

私の質問は次のとおりです。そうでない場合、なぜこれが良い考えではないのか教えていただけますか? 私は NSString 値を扱っています。

みんなありがとう :)

4

2 に答える 2

0

ViewControllerBがlastviewそのプロパティを保持していないことを確認してください。そうしないと、保持サイクルになり、2つのViewControllerが解放されることはありません。子ViewControllerから親に情報を渡す正しい方法は、プロトコルを使用することです。同様の質問がたくさんあります。たとえば、https://stackoverflow.com/a/9736559/568529を参照してください。

于 2013-02-28T19:36:58.427 に答える
0

技術的にはこれで問題ありません。動作します。前述のように、前のビュー コントローラーへの弱い参照のみを保持していることを確認してください。そうしないと、保持サイクルが発生します。

ただし、これは再利用性と機能の分離の点であまりきれいではありません。

あなたが使用できる他の3つのアプローチ:

  • 委任
  • キー値観測
  • NS通知
于 2013-02-28T19:56:19.120 に答える