1. 程式人生 > >給分類(Category)新增自定義屬性

給分類(Category)新增自定義屬性

.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);