Как скопировать NSMutableArray - PullRequest
20 голосов
/ 23 апреля 2011

Я просто хотел бы знать, как скопировать NSMutableArray, чтобы при изменении массива моя ссылка на него не менялась. Как я могу скопировать массив?

1 Ответ

47 голосов
/ 23 апреля 2011

Есть несколько способов сделать это:

NSArray *newArray = [NSMutableArray arrayWithArray:oldArray];

NSArray *newArray = [[[NSMutableArray alloc] initWithArray:oldArray] autorelease];

NSArray *newArray = [[oldArray mutableCopy] autorelease];

Тем не менее, все они создадут мелкие копии .

( Редактировать: Если вы работаете с ARC, просто удалите вызовы на autorelease.)

Для глубоких копий используйте это вместо:

NSMutableArray *newArray = [[[NSMutableArray alloc] initWithArray:oldArray copyItems:YES] autorelease];

Стоит отметить: По очевидным причинам последняя потребует от всех объектов-элементов вашего массива реализации NSCopying.

...