zoukankan      html  css  js  c++  java
  • 关联:objc_getAssociatedObject和objc_setAssociatedObject使用

    为UIButton的category添加属性

    UIButton+subTitle.h

    #import <UIKit/UIKit.h>
    
    #import <objc/runtime.h>
    
     
    
    @interface UIButton (subTitle)
    
    @property (nonatomic, copy) NSString *subTitle;
    
    @property (nonatomic, strong) UIColor *foreColor;
    
    //此处添加int类型属性不能使用,因为objc需要用id类型,此处留着以后修改
    
    @property (nonatomic) int tagAdd;
    
    @end

    UIButton+subTitle.m

    #import "UIButton+subTitle.h"
    
     
    
    @implementation UIButton (subTitle)
    
     
    
    static char oooo;
    
     
    
    - (NSString *)subTitle{
    
     
    
        return objc_getAssociatedObject(self, @selector(subTitle));
    
    }
    
    - (void)setSubTitle:(NSString *)subTitle{
    
        [self setTitle:subTitle forState:UIControlStateNormal];
    
        objc_setAssociatedObject(self, @selector(subTitle), subTitle, OBJC_ASSOCIATION_COPY_NONATOMIC);
    
    }
    
    - (UIColor *)foreColor{
    
        return objc_getAssociatedObject(self, @selector(foreColor));
    
    }
    
    - (void)setForeColor:(UIColor *)foreColor{
    
        self.backgroundColor = foreColor;
    
        objc_setAssociatedObject(self, @selector(foreColor), foreColor, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    
    }
    
     
    
    - (void)setTagAdd:(int)tagAdd{
    
        objc_setAssociatedObject(self, &oooo, @(tagAdd), OBJC_ASSOCIATION_ASSIGN);
    
    }
    
    - (int)tagAdd{
    
        return (int)objc_getAssociatedObject(self, &oooo);
    
    }
  • 相关阅读:
    无题
    使用git clone 出现 Permission denied 解决办法
    为什么要用BigDecimal
    FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换
    版本管理规范
    Intellij Idea 常用快捷键
    AI学习资源
    Python图谱
    网站架构演化历程
    微服务系列
  • 原文地址:https://www.cnblogs.com/On1Key/p/5144896.html
Copyright © 2011-2022 走看看