自动将属性值从一个对象复制到另一个不同类型但协议相同的对象(Objective-C)
我有两个具有相同属性集的类,在协议中使用@property指令声明,它们都实现了。现在我想知道是否可以用第二个类的实例的值自动填充第一个类的实例(反之亦然)。自动将属性值从一个对象复制到另一个不同类型但协议相同的对象(Objective-C),objective-c,ios,properties,copy,Objective C,Ios,Properties,Copy,我有两个具有相同属性集的类,在协议中使用@property指令声明,它们都实现了。现在我想知道是否可以用第二个类的实例的值自动填充第一个类的实例(反之亦然)。 我希望这种方法是健壮的,这样,如果我更改协议中声明的属性的类型,就不需要在复制方法中添加额外的代码。是的,考虑到确切的上下文,可以有多种方法来解决这个问题 目前我能想到的一个方法是首先获取源对象的所有属性,然后使用setValue:value-forKey:key设置目标对象上的值 用于检索所有自定义属性的代码: -(NSSet *)pr
我希望这种方法是健壮的,这样,如果我更改协议中声明的属性的类型,就不需要在复制方法中添加额外的代码。是的,考虑到确切的上下文,可以有多种方法来解决这个问题 目前我能想到的一个方法是首先获取源对象的所有属性,然后使用
setValue:value-forKey:key
设置目标对象上的值
用于检索所有自定义属性的代码:
-(NSSet *)propertyNames {
NSMutableSet *propNames = [NSMutableSet set];
unsigned int outCount, i;
objc_property_t *properties = class_copyPropertyList([self class], &outCount);
for (i = 0; i < outCount; i++) {
objc_property_t property = properties[i];
NSString *propertyName = [[[NSString alloc]
initWithCString:property_getName(property)] autorelease];
[propNames addObject:propertyName];
}
free(properties);
return propNames;
}
-(NSSet*)属性名称{
NSMutableSet*propNames=[NSMutableSet];
无符号整数超过,i;
objc_property_t*properties=class_copyPropertyList([self class],&outCount);
对于(i=0;i
您可能需要签出以获取更多信息。我是否正确推断必须导入?