给分类(Category)添加自定义属性

来源:互联网 发布:mac有没有抢网速的软件 编辑:程序博客网 时间:2024/05/21 06:14

.h

@interface MyInfo : NSObject@property(nonatomic,assign) int num;@property(nonatomic,retain) NSString* text;@end@interface UIView(MyView)@property(nonatomic,retain) MyInfo* info;@end

.m

@implementation MyInfo-(id)init{    self = [super init];    self.text = @"";    self.num = 0;    return self;}- (id)copyWithZone:(nullable NSZone *)zone{    MyInfo* info = [[[self class] allocWithZone: zone] init];    info.num = self.num;    info.text = [self.text copyWithZone:zone];    return info;}@end@implementation UIView(MyView)static void *infoKey = &infoKey;-(void)setInfo:(MyInfo *)info{    objc_setAssociatedObject(self, &infoKey, info, OBJC_ASSOCIATION_COPY);}-(MyInfo*)info{    return objc_getAssociatedObject(self, &infoKey);}@end

testcode

 MyInfo* info = [[MyInfo alloc] init];    UIView* view1 = [[UIView alloc] init];    info.num = 1;    info.text = @"view1";    view1.info = info;    info = [[MyInfo alloc] init];    UIView* view2 = [[UIView alloc] init];    info.num = 2;    info.text = @"view2";    view2.info = info;    NSLog(@"%d %@, %d %@",view1.info.num,view1.info.text,view2.info.num,view2.info.text);
0 0