具有NSMutableArray成员的NSMutableArray自定义对象的深层副本

时间:2013-06-27 13:32:40

标签: ios objective-c nsmutablearray deep-copy

我正在尝试制作NSMutableArray的深层副本,其对象是与此类似的自定义类的实例:

@interface CustomParent : NSObject
@property NSInteger Id;
@property (strong, nonatomic) NSString *IdStr;
@property (weak, nonatomic) NSDate *Date; 
@property (strong, nonatomic) NSMutableArray *CustomChildren;
@property (strong, nonatomic) CustomType *Type;
@property float Value;
@end

我知道有很多关于复制对象的帖子,但我找不到用于获取具有集合成员或属性的对象的完整副本的示例。 NSMutableArray *dstArray = [[NSMutableArray alloc] initWithArray:srcArray copyItems:YES];引发了涉及copyWithZone方法的异常。

我该怎么做?谢谢!

1 个答案:

答案 0 :(得分:11)

为了深度复制数组的内容

[[NSMutableArray alloc] initWithArray:srcArray copyItems:YES];

会将copyWithZone:发送到集合中的每个对象。如果他们没有回应这个选择器,你就会崩溃。

让您的CustomParent课程符合NSCopying协议,并且您已完成。

以下是有关如何实现它的一些额外信息:Implementing NSCopying