如何再分类中添加属性

 1 #import <UIKit/UIKit.h>
 2 
 3 typedef enum {
 4     HMImageDirectionLeft, // 左边 0
 5     HMImageDirectionRight,// 右边 1
 6 } HMImageDirection;
 7 
 8 
 9 @interface UIImage (Extension)
10 // x值
11 @property(nonatomic,assign) CGFloat x;
12 // y值
13 @property(nonatomic,assign) CGFloat y;
14 // 移动方向
15 @property(nonatomic,assign) HMImageDirection direction;
16 
17 @end
#import "UIImage+Extension.h"
#import <objc/runtime.h>
@implementation UIImage (Extension)

static char imageX;
static char imageY;
static char imageDirection;
- (void)setX:(CGFloat)x{
    // objc_setAssociatedObject:利用该方法可以给一个分类添加属性
    objc_setAssociatedObject(self, &imageX, [NSString stringWithFormat:@"%f",x], OBJC_ASSOCIATION_COPY);
}

- (CGFloat)x {
    return [objc_getAssociatedObject(self, &imageX) floatValue];
}

- (void)setY:(CGFloat)y {
    // objc_setAssociatedObject:利用该方法可以给一个分类添加属性
    objc_setAssociatedObject(self, &imageY, [NSString stringWithFormat:@"%f",y], OBJC_ASSOCIATION_COPY);
}

- (CGFloat)y {
    return [objc_getAssociatedObject(self, &imageY) floatValue];
}

- (void)setDirection:(HMImageDirection)direction {
    // objc_setAssociatedObject:利用该方法可以给一个分类添加属性
    objc_setAssociatedObject(self, &imageDirection, [NSString stringWithFormat:@"%d",direction], OBJC_ASSOCIATION_COPY);
}

- (HMImageDirection)direction {
     return [objc_getAssociatedObject(self, &imageDirection) boolValue];
}

@end
原文地址:https://www.cnblogs.com/neilHoIOS/p/4637476.html