2013-03-13 59 views
0

嵌入我在导航控制器视图控制器嵌入具有一个属性(非原子强的NSMutableArray * myData的),当我推动第二视图我使用这种方法也通过我的阵列数据这一观点:传数据视图控制器之间回来的UINavigationController

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
     if ([[segue identifier] isEqualToString:@"secondView"]) { 
      SecondViewController *svc = [segue destinationViewController]; 
      svc.myDataInSecondView = self.myData; 
    } 

我的问题是:为什么如果我在myDataInSecondView阵列,比我会回来首先查看我的myData的数组值更改任何值发生改变呢?我一直认为我必须使用自定义协议和委托才能将任何数据传回前一个视图。

+0

如果您将指针指向数据到另一个控制器并且更改了数据,那么它将同时更改。 – rooster117 2013-03-13 21:20:00

+0

是在这种情况下,但要看怎么是财产申报 – pdrcabrod 2013-03-13 21:22:39

+0

是否有所作为,如果我将宣布从第一个视图属性作为弱而不强?如果它将是弱财产,我会移动到第二个视图将myData对象被释放? – Guferos 2013-03-13 21:28:44

回答

1

你这样做的方式是视图控制器之间共享数据的一种很常见的方式。第二个视图控制器具有可由第一个视图控制器设置的属性。该属性是一个指针,与第一个视图控制器中的相同。两者都指向内存中的相同位置,所以视图控制器都可以更改相同的数据。

如果您不希望第二个视图控制器更改数据,设置属性为copy

@property (nonatomic, copy) MyData *myData; 
相关问题