Runtime 实现 动态添加属性

发布时间:2016-12-6 7:32:27编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Runtime 实现 动态添加属性 ",主要涉及到Runtime 实现 动态添加属性 方面的内容,对于Runtime 实现 动态添加属性 感兴趣的同学可以参考一下。

利用动态加载为对象添加一个 block 点击属性;

.h 文件

1 #import <UIKit/UIKit.h>2 3 @interface UIView (Tap)4 /**5  *  动态添加手势 6  */7 - (void)setTapActionWithBlock:(void (^)(void))block ;8 @end

.m 文件

 1 #import "UIView+Tap.h" 2 #import <objc/runtime.h> 3 /** 4  *  动态添加手势 5  */ 6 static const char *ActionHandlerTapGestureKey; 7  8 @implementation UIView (Tap) 9 10 - (void)setTapActionWithBlock:(void (^)(void))block {11     12     self.userInteractionEnabled = YES;13     14     UITapGestureRecognizer *gesture = objc_getAssociatedObject(self, &ActionHandlerTapGestureKey);15     16     if (!gesture) {17         gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleActionForTapGesture:)];18         [self addGestureRecognizer:gesture];19         objc_setAssociatedObject(self, &ActionHandlerTapGestureKey, gesture, OBJC_ASSOCIATION_RETAIN);20     }21     22     objc_setAssociatedObject(self, &ActionHandlerTapGestureKey, block, OBJC_ASSOCIATION_COPY);23 }24 25 - (void)handleActionForTapGesture:(UITapGestureRecognizer *)gesture {26     if (gesture.state == UIGestureRecognizerStateRecognized)  {27         void(^action)(void) = objc_getAssociatedObject(self, &ActionHandlerTapGestureKey);28         if (action)  {29             action();30         }31     }32 }33 @end


上一篇:工厂方法
下一篇:linux系统limit知识

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款