Runtime应用-给对象添加属性

2017年6月29日
一.给按钮添加扩展属性indexPath
1.实现

//
//  UIButton+BZ.h
//  317hu
//
//  Created by mac on 2017/6/28.
//  Copyright © 2017年 huanghaipo. All rights reserved.
//

#import 
@interface UIButton(BZ)
//@property 只会生产申明,不会生产实现
@property (nonatomic, strong) NSIndexPath *indexPath;
@end

//
//  UIButton+BZ.m
//  317hu
//
//  Created by mac on 2017/6/28.
//  Copyright © 2017年 huanghaipo. All rights reserved.
//

#import "UIButton+BZ.h"
#import 
#define  kUIButtonIndexPathKey @"kUIButtonIndexPathKey"
@implementation UIButton (BZ)
// 告诉编译器不要创建存取方法(set get两个都不创建),可以不写【写了可能实例变量也不会创建】
//@dynamic indexPath;
- (void)setIndexPath:(NSIndexPath *)indexPath
{
    //将某个值跟某个对象关联起来,将某个值存储到某个对象中
    //object: self
    //key:属性名称 kUIButtonIndexPathKey
    //value: 值 indexPath
    //policy:保存策略
    objc_setAssociatedObject(self, kUIButtonIndexPathKey, indexPath, OBJC_ASSOCIATION_RETAIN);
}
- (NSString *)indexPath
{
    //获取绑定的值
    NSString *idx = objc_getAssociatedObject(self, kUIButtonIndexPathKey);
    return idx;
}
@end

2.用法

Runtime应用-给对象添加属性_第1张图片
image.png

如果您发现本文对你有所帮助,如果您认为其他人也可能受益,请把它分享出去。

你可能感兴趣的:(Runtime应用-给对象添加属性)