我的cocachina发帖
http://www.cocoachina.com/bbs/read.php?tid=133158
将UIButton的addTarget: action: forControlEvents:改造成block
建立UIButton+Block,将其引用到.pch中,#import "UIButton+Block.h"
#import <Foundation/Foundation.h>
#import <objc/runtime.h>
typedef void (^ActionBlock)();
@interface UIButton(Block)
@property (readonly) NSMutableDictionary *event;
- (void) handleControlEvent:(UIControlEvents)controlEvent withBlock:(ActionBlock)action;
@end
#import "UIButton+Block.h"
@implementation UIButton(Block)
static char overviewKey;
@dynamic event;
- (void)handleControlEvent:(UIControlEvents)event withBlock:(ActionBlock)block {
objc_setAssociatedObject(self, &overviewKey, block, OBJC_ASSOCIATION_COPY_NONATOMIC);
[self addTarget:self action:@selector(callActionBlock:) forControlEvents:event];
}
- (void)callActionBlock:(id)sender {
ActionBlock block = (ActionBlock)objc_getAssociatedObject(self, &overviewKey);
if (block) {
block();
}
}
@end