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關(guān)聯(lián)一個UIColord的屬性defaultColor
用的時候用objc_getAssociatedObject讀取關(guān)聯(lián)的UIColor的屬性。

  • 注意:在設置屬性的時候用@dynamic來告訴編譯器不要自動生成get和set方法
    使用的時候如下:
UIImage * img =[UIImage imageNamed:@"login_icon1"];
Class cla = [UIImage class];
    
imageView.image = img;
img.defaultColor = UIColor.redColor; 
NSLog(@"%@",img.defaultColor);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容