簡體   English   中英

如何將 NSArray 復制到另一個 NSArray?

[英]How to copy NSArray to another NSArray?

我有許多不同的NSArrays ,根據用戶的選擇,我希望將其中一個復制到新的NSArray 如何將一個NSArray復制到另一個?

有幾種方法可以做到這一點——

  1. array1 = [array2 copy];

  2. 使用initWithArray方法。

  3. 您還可以使用initWithArray:copyItems:方法。 (這對於NSMutableArray

你可以使用

NSArray *_newArray = [NSArray arrayWithArray:_oldArray];

或者,如果您更喜歡,可以使用:

NSArray *_newArray = [[NSArray alloc] initWithArray:_oldArray];

(在這種情況下,第一個數組的對象不會被復制,只有在第二個NSArray前面保留一個對象,您可以從任何數組中刪除該對象,它不會影響另一個數組,但是如果您更改了任何對象任何 NSArray 也將在另一個 NSArray 中更改,因為舊數組和新數組都在使用相同的對象實例。)

如果您的計划是在新數組中創建舊對象的另一個實例:

NSArray *_newArray = [[NSArray alloc] initWithArray:_oldArray copyItems:true];

如果您使用的是ARC,你將不需要到別的做任何事情,如果你不是,在這兩種情況下-initWithArray:-initWithArray:copyItems:你應該使用[_newArray release]; 在您不想再使用后釋放陣列。

NSArray *newArray = [oldArray copy];

如果您需要從新數組中添加/刪除,制作可變副本的最簡單方法是:

NSMutableArray *editableArray = [oldArray mutableCopy];

上面的函數都是淺拷貝,深拷貝就像@holex 和@rishi 提到的

NSArray *newArray = [[NSArray alloc] initWithArray:oldArray copyItems:true];
NSMutableArray *editableArray = [[NSMutableArray alloc] initWithArray:oldArray copyItems:true];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM