我正在尝试制作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
方法的异常。
我该怎么做?谢谢!
答案 0 :(得分:11)
为了深度复制数组的内容
[[NSMutableArray alloc] initWithArray:srcArray copyItems:YES];
会将copyWithZone:
发送到集合中的每个对象。如果他们没有回应这个选择器,你就会崩溃。
让您的CustomParent
课程符合NSCopying
协议,并且您已完成。
以下是有关如何实现它的一些额外信息:Implementing NSCopying