对象可复制的 objective-c

Object copiable objective-c

提问人:Miguel Sanchez Cuarental 提问时间:8/11/2015 最后编辑:rmaddyMiguel Sanchez Cuarental 更新时间:8/11/2015 访问量:40

问:

在我的应用程序中,我有一个对象,我想在他的属性更改之前复制它。我的应用的类包含以下代码:The class of my app has the following code:

@interface match : NSObject 
@property int iMatchId;
-(id) copyWithZone: (NSZone *) zone;
@end

在实现该对象的类中,我在方法“copyWithZone”中有以下代码:

-(id) copyWithZone: (NSZone *) zone
{
    match *matchCopy = [[match allocWithZone: zone] init];

    matchCopy.iMatchId = _iMatchId;
    return matchCopy;
}

当我想复制对象时,我执行以下代码:

_oOldMatch = [_oMatch copy];

但是如果我改变变量,那么它就会改变变量。_oMatch_oOldMatch

我不知道我是否在做坏事。

目标-C 对象 可变

评论

1赞 Rob Napier 8/11/2015
类名在 ObjC 中具有大写字母,并且没有匈牙利语表示法(您正在使用的 and 前缀)。以非标准风格编写会破坏键值编码,并且对于 ObjC 开发人员来说很难阅读。io
1赞 Rob Napier 8/11/2015
此外,我无法使用上述代码重现此行为。它的行为符合预期。请提供 MCVE:stackoverflow.com/help/mcve
0赞 rmaddy 8/11/2015
更新您的问题,显示演示问题的代码。展示您是如何改变的,以及您如何确定两者都因此而改变。_oMatch
0赞 Rob 8/11/2015
Miguel,这个代码片段(尽管有命名约定)很好。如果属性是可变对象(例如 a 或类似的东西)而不是基本数据类型(例如 an ),那么您可能会看到您描述的问题(但如果将该属性设置为类型,则该问题将很容易解决)。但对于财产来说,这很好。顺便说一句,除了 Rob 的命名约定观察之外,我可能还倾向于明确指定这符合(这是确保安全并最大限度地减少在方法名称中引入拼写错误的机会的好方法)。NSMutableArrayintcopyintNSCopying

答: 暂无答案