对象引用 NSCopying 代理

.h

@interface xk : NSObject <NSCopying,NSMutableCopying>

@property (nonatomic, copy) NSString *string1;
@property (nonatomic, copy) NSString *string2
@end

 

实现代理【拷贝】方法

.m

- (id)copyWithZone:(nullable NSZone *)zone {

xk *xk1= [[[self class] allocWithZone:zone] init];
xk1.string1 = [self.string1 copy];
xk1.string2 = [self.string2 copy];
return xk1;

}

 或

-(id)copyWithZone:(NSZone *)zone{
    xk *model = [[[self class] allocWithZone:zone] init];
    unsigned int count = 0;
    objc_property_t *properties = class_copyPropertyList([self class], &count);
    for (int i = 0; i<count; i++) {
        objc_property_t property = properties[i];
        const char *name = property_getName(property);
        NSString *propertyName = [NSString stringWithUTF8String:name];
        id value = [self valueForKey:propertyName];
        if (value) {
            [model setValue:value forKey:propertyName];
        }
    }
    free(properties);
    return model;
}

-(id)mutableCopyWithZone:(NSZone *)zone{
    xk *model = [[[self class] allocWithZone:zone] init];
    unsigned int count = 0;
    objc_property_t *properties = class_copyPropertyList([self class], &count);
    for (int i = 0; i<count; i++) {
        objc_property_t property = properties[i];
        const char *name = property_getName(property);
        NSString *propertyName = [NSString stringWithUTF8String:name];
        id value = [self valueForKey:propertyName];
        if (value) {
            [model setValue:value forKey:propertyName];
        }
    }
    free(properties);
    return model;
}

 

相关文章:

  • 2022-01-01
  • 2022-12-23
  • 2021-10-21
  • 2021-09-13
  • 2021-06-27
  • 2021-05-17
  • 2021-09-22
猜你喜欢
  • 2021-12-27
  • 2021-08-14
  • 2022-12-23
  • 2021-07-09
  • 2022-12-23
相关资源
相似解决方案