Прежде всего, NSArray
не имеет функции глубокого копирования.Однако вы можете сделать функцию глубокого копирования, выполнив следующие действия:
@interface NSArray(deepCopy)
-(NSArray *) deepCopy;
@end
@implementation
-(NSArray *) deepCopy
{
NSMutableArray *ret = [NSMutableArray array];
for (id val in self)
{
if ([val conformsToProtocol:@protocol(NSCopying)])
{
[ret addObject:[val copy]];
}
else
{
[ret addObject:val];
}
}
return ret;
}
@end
Во-вторых, newArray = oldArray
не копирует массив .Он просто указывает newArray
на массив, на который указывает oldArray
.
В-третьих, +arrayWithArray:
делает поверхностную копию массива, что означает, что отдельные объекты НЕ копируются.