将对象添加到NSMutableArray,深层复制

时间:2014-06-06 15:05:52

标签: objective-c nsmutablearray deep-copy

我在我的类中声明了一个属性:NSMutableArray * data;

classmethod{
  [self.data addObject: message];
}

它正在向数组添加消息引用,当方法结束时,数据的内容将设置为nil,有没有办法可以进行深层复制,然后在方法结束时将消息添加到数组而不会丢失它。

3 个答案:

答案 0 :(得分:0)

与Caleb状态一样,如果这是一个真正像你的代码暗示的类方法那么它就不会起作用。如果它是一个实例方法,比如示例1那么它应该可以正常工作,并且需要更多代码来帮助回答这个问题。

示例1:这没关系

-(void)classMethod
{
    [self.data addObject: message];
}

示例2:这不行,因为除非您传递属性,否则无法引用类方法中的属性

+(void)classMethodWithMessage:(NSString *)message
{
    [self.data addObject: message];
}

示例3:这是正常的,因为您传递了需要更新的数组

+(void)classMethodWithArray:(NSMutableArray *)array message:(NSString *)message
{
    [array addObject: message];
}

答案 1 :(得分:-1)

您可以使用以下内容添加对象的副本

[self.data addObject: [message copy]];

虽然我不确定你为什么会丢失你的对象,假设self.data是一个强大的引用,它应该保持消息的活着。

答案 2 :(得分:-1)

应设置消息属性"强"!