[英]How to copy NSArray to another NSArray?
我有許多不同的NSArrays
,根據用戶的選擇,我希望將其中一個復制到新的NSArray
。 如何將一個NSArray
復制到另一個?
有幾種方法可以做到這一點——
array1 = [array2 copy];
使用initWithArray
方法。
您還可以使用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.