ios 添加block 类别_iOS-分类(Categories)和类扩展(Extensions)
#import "UIButton+Block.h"@implementation UIButton (Block)static char overviewKey;static char buttonType;@dynamic event;@dynamic Type;- (void)setType:(NSString *)Type {objc_setAssociatedObject(self, &
#import "UIButton+Block.h"
@implementation UIButton (Block)
static char overviewKey;
static char buttonType;
@dynamic event;
@dynamic Type;
- (void)setType:(NSString *)Type {
objc_setAssociatedObject(self, &buttonType, Type, OBJC_ASSOCIATION_COPY_NONATOMIC);
}
- (NSString *)Type {
NSString *Type = objc_getAssociatedObject(self, &buttonType);
return Type;
}
- (void)handleControlEvent:(UIControlEvents)event withBlock:(ActionBlock)block {
if (block) {
objc_removeAssociatedObjects(self); // 移除这个对象(button)的所有关联对象
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
更多推荐
所有评论(0)