我在我的类中声明了一个属性:NSMutableArray * data;
classmethod{
[self.data addObject: message];
}
它正在向数组添加消息引用,当方法结束时,数据的内容将设置为nil,有没有办法可以进行深层复制,然后在方法结束时将消息添加到数组而不会丢失它。
答案 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)
应设置消息属性"强"!