有没有办法复制NSObject的属性?

时间:2015-11-17 08:57:16

标签: ios

我想实现一个方法,可以将对象的属性从A复制到B.例如

  

A的名字= @“a”,

     

A的代码= @“1”,

     

A的地址= 0x100(假)。

在我使用

之后
  

B的名字= @“b”,

     

B的代码= @“2”,

     

B的地址= 0x200。

使用自定义复制方法后,

  

A = [A copyWith:B];

现在

  

A的名字= @“b”,

     

A的代码= @“2”,

但是

  

A的地址= 0x100

不会改变。

代码:

#import <Foundation/Foundation.h>
@interface MyObject : NSObject
@property (copy, nonatomic) NSString *name;
@property (copy, nonatomic) NSString *code;
@end

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

然后只需删除NSCopying并编写自己的复制方法,例如:

-(void)copyMyObjectTo:(MyObject*)obj{

    obj.name = [NSString stringWithFormat:@"%@",self.name];
    obj.code = [NSString stringWithFormat:@"%@",self.code];
}

并称之为:

[B copyMyObjectTo:A];

它应该有用

@Rob 一样,如果您使用复制

保留属性,则无需创建新的字符串对象

答案 1 :(得分:0)

使用objc / runtime。从新对象获取所有objc_propertis并使用KVC设置旧对象的值