Подтвердить что ты не робот

Как скопировать NSMutableArray

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

4b9b3361

Ответ 1

Существует несколько способов сделать это:

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.