2013-03-13 52 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; 
相關問題