1

アプリケーションの 1 つでストーリーボードを使用していますが、prepareForSegue メソッドで SourceViewController から DestinationViewController にプロパティを渡しているときに、渡されるプロパティは値渡しではなく参照渡しです。ユーザーが値をいじってタップすると、Destination View Controllerのように問題が発生し、SourceViewControllerで不要な値が更新されます。

この問題の詳細については、以下を参照してください。

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{if([[segue identifier] isEqualToString:@"DestinationView"])
    {
        DestinationViewController  *destinationViewController = [segue destinationViewController];
        [destinationViewController setActivity:activity];
        //Here the value of activity is passed by reference. I have verified the same by checking the address of activity variable in Variable pane of Xcode in Source and destination view controller
}

上記の場合、参照ではなく値のみを渡す方法がわかりません。

4

1 に答える 1

2

それのコピーを使用してみてください

    [destinationViewController setActivity:[activity copy]];

必要に応じてデリゲート copywithZone を実装する

- (id)copyWithZone:(NSZone *)zone
于 2013-05-08T12:04:23.017 に答える