2012-06-26 168 views
4

我有3 NSMutableArrays:a,b,c。NSMutableArray和副本

a= [b copy]; 
a= [c copy]; 

第一次複製的元素(從b)會發生什麼?

在我的使用-case中,a是一個數組,我用它作爲DataSource的tableview,而b,c是需要的時候代替數據源的數組。 謝謝

具體的例子。最後我得使用setArray。

-(IBAction)selectTab:(id)sender { 
    if ([(UIButton*)sender tag] == 1000) { 
     if (![self.butonLocuri isSelected]) { 

      [tableDataSourceArray setArray:locuriArray]; 
      [self addPins:self.tableDataSourceArray]; 
      [self.myTableView reloadData]; 
     } 
    } 

    if ([(UIButton*)sender tag] == 2000) { 

     if(![self.butonEvenimente isSelected]){ 

      [tableDataSourceArray setArray:evenimenteArray]; 
      [self addPins:self.tableDataSourceArray]; 
      [self.myTableView reloadData]; 


     } 


    } 
} 
+0

這段代碼是用ARC還是沒有ARC編譯的? – tia

回答

5
a= [b copy]; // a is pointing to [b copy] memory location. 
a= [c copy]; // a is pointing to [c copy] memory location. 

您應該使用setArray:方法。

[a setArray:b]; 
[a setArray:c]; 
+0

如果a有1個元素,c有4個元素,[a setArray:c]之後,a只有1個元素。它是否正確?它似乎發生在我的情況。 –

+0

不,這是不正確的。 –

+0

粘貼有問題的代碼。 –

2

它們被數組c的元素替換。 Plus複製只適用於你已經實現NSCopying委託。