[iOS]Objective-C Runtime学习笔记之:为U

2016-10-18  本文已影响20人  溜萝卜

1.新建UIButton分类

//UIButton+Block.h
#import <UIKit/UIKit.h>

typedef void (^btnBlock)();

@interface UIButton (Block)

- (void)addActionWithBlock:(btnBlock)block;

@end

2.实现

//UIButton+Block.m
#import "UIButton+Block.h"
#import <objc/runtime.h>
static const char btnKey;

@implementation UIButton (Block)
- (void)addActionWithBlock:(btnBlock)block
{
    if (block)
    {
        objc_setAssociatedObject(self, &btnKey, block, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    }
    
    [self addTarget:self action:@selector(btnAction) forControlEvents:UIControlEventTouchUpInside];
}

- (void)btnAction
{
    btnBlock block = objc_getAssociatedObject(self, &btnKey);
    block();
}

@end
上一篇 下一篇

猜你喜欢

热点阅读