• 为分类添加属性


    #import <objc/runtime.h>

    1.先添加属性,但是不会动态生成带下划线的属性

    @property (nonatomic, assign) NSInteger index;

    @property (nonatomic, copy) NSString *loginPwd;

    @property (nonatomic , copy) void (^indexBlock)(NSInteger index);

    2.

    1>.如果是基本数据类型

    static char strKey = 'm';

    - (NSInteger)index{

        return [objc_getAssociatedObject(self, &strKey) intValue];

    }

    - (void)setIndex:(NSInteger)index{

        return objc_setAssociatedObject(self, &strKey, @(index), OBJC_ASSOCIATION_ASSIGN);

    }

    2>.如果是字符串,自定义对象

    static void *str = &str;

    -(void)setLoginPwd:(NSString *)loginPwd{

        return objc_setAssociatedObject(self, & str, loginPwd, OBJC_ASSOCIATION_COPY);

    }

    - (NSString *)loginPwd{

        return objc_getAssociatedObject(self, & str);

    }

    3>.如果是block类型,类似于字符串类型

    static void *strKey3 = &strKey3;

    -(void)setIndexBlock:(void (^)(NSInteger))indexBlock{

        return objc_setAssociatedObject(self, & strKey3, indexBlock, OBJC_ASSOCIATION_COPY);

    }

    -(void (^)(NSInteger))indexBlock{

        return objc_getAssociatedObject(self, & strKey3);

     }

  • 相关阅读:
    优化网站性能的14条准则
    单元测试
    无配置wcf Host
    .net 4.0
    Java 7 resources
    关于重用
    用GMaven plugin更好地编译系统
    关于系统分层的自问自答
    UBIQUITOUS LANAGUAGE
    用Groovy方式实现接口便于单元测试和协作开发
  • 原文地址:https://www.cnblogs.com/chaoyueME/p/5916091.html
Copyright © 2020-2023  润新知