【问题标题】:Deep copy of an NSMutableArray of custom objects with NSMutableArray members具有 NSMutableArray 成员的自定义对象的 NSMutableArray 的深层副本
【发布时间】:2013-06-27 13:32:39
【问题描述】:

我正在尝试制作 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 方法的异常。

我该怎么做?谢谢!

【问题讨论】:

  • 你的意思可能是NSCopying
  • @AppsDev,建议的解决方案运气好吗?
  • @GabrielePetronella 我阅读了您提到的帖子,它似乎有效,谢谢!
  • @LescaiIonel 我之前尝试过NSCoding,复制许多连接到一个类的对象需要很长时间。 Thins NSCopying 应该更快。

标签: ios objective-c nsmutablearray deep-copy


【解决方案1】:

为了深拷贝数组的内容

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

copyWithZone: 发送到集合中的每个对象。如果他们不响应此选择器,您将遇到崩溃。

让你的CustomParent 类符合NSCopying 协议,你就完成了。

这里有一些关于如何实现它的额外信息:Implementing NSCopying

【讨论】:

    猜你喜欢
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多