RunTime应用--动态给分类添加属性

来源:互联网 发布:麦迪生涯数据统计 编辑:程序博客网 时间:2024/04/25 11:36

.h

#import <UIKit/UIKit.h>typedef void(^blocks)(id sender);@interface UIGestureRecognizer (Block)+(instancetype) createBlock:(blocks)block;@end

.m

#import "UIGestureRecognizer+Block.h"#import <objc/runtime.h>const char *key = "key";@implementation UIGestureRecognizer (Block)+(instancetype) createBlock:(blocks)block{    __weak typeof(self)base = self;    return [[base alloc]initWithBlock:block];}-(instancetype) initWithBlock:(blocks)block{    self = [self init];    if (self){        [self addBlock:block];        [self addTarget:self action:@selector(fangfa:)];    }    return self;}-(void)addBlock:(blocks)block{    if (block){        objc_setAssociatedObject(self, key, block, OBJC_ASSOCIATION_COPY_NONATOMIC);    }}-(void)fangfa:(id)sender{    blocks block = objc_getAssociatedObject(self, key);    if (block){        block(sender);    }}@end
调用

    UIView *view = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];    view.backgroundColor = [UIColor redColor];    [self.view addSubview:view];        [view addGestureRecognizer:[UITapGestureRecognizer createBlock:^(id sender) {        NSLog(@"点击:%@",sender);    }]];




原创粉丝点击