Block扩展UIButton写法记录

1.使用runtime机制中的objc_setAssociatedObject和objc_getAssociatedObject方法

@interface UIButton (LXAdd)

  - (void)addTargetEvents:(UIControlEvents)Events block:(void (^)(id sender))block;

@end

@implementation UIButton (LXAdd)

- (void)invoke:(id)sender {
   void (^block)(id sender) = objc_getAssociatedObject(self, &block_key);
    block(sender);
}
- (void)addTargetEvents:(UIControlEvents)Events block:(void (^)(id sender))block{
    if(!Events) return;
    objc_setAssociatedObject(self, &block_key, block, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    [self addTarget:self action:@selector(invoke:) forControlEvents:Events];
}

@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,842评论 0 9
  • 本文分为4个部分 1.介绍OC和C语言之间的转换 2.介绍运行时和相关术语 3.介绍消息发送机制已及怎样找到函数实...
    一片枫叶随风舞阅读 2,532评论 0 1
  • 今天拿到商策的奖状,还是很开心的对我是一个很大的鼓励,拿奖也是会上瘾的,加油-------罗芳
    强迫症患者L阅读 1,170评论 0 0
  • 杨扬老师,2016年9月10日至11日 一/内容 1.来源:四液学说(希波克拉底),气质类型(盖伦)。 2.红蓝黄...
    念即起行阅读 3,775评论 0 0
  • 等你,在空气中,在风里雨里 蝉声沉落,蛙声升起 一池的红莲如不息的火苗,在风雨中 你来不来都没什么 好似每朵莲花都...
    风情公子阅读 3,089评论 0 0