Есть несколько способов сделать это:
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
.