runtime 给Category分类增加属性

//这是.h

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface UIImage (Category)
@property (nonatomic,strong) UIColor * defaultColor;
@end

NS_ASSUME_NONNULL_END
///这是.m
#import "UIImage+Category.h"
#import <objc/runtime.h>


@implementation UIImage (Category)

static char kDefaultColorKey;

@dynamic defaultColor;


- (void) setDefaultColor:(UIColor *)defaultColor {
    objc_setAssociatedObject(self, &kDefaultColorKey, defaultColor, OBJC_ASSOCIATION_COPY_NONATOMIC);
}

- (UIColor *)defaultColor {
    return objc_getAssociatedObject(self, &kDefaultColorKey);
}

@end

如代码所示:先用objc_setAssociatedObject 给UIImage关联一个UIColord的属性defaultColor
用的时候用objc_getAssociatedObject读取关联的UIColor的属性。

  • 注意:在设置属性的时候用@dynamic来告诉编译器不要自动生成get和set方法
    使用的时候如下:
UIImage * img =[UIImage imageNamed:@"login_icon1"];
Class cla = [UIImage class];
    
imageView.image = img;
img.defaultColor = UIColor.redColor; 
NSLog(@"%@",img.defaultColor);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容