当前位置: 首页 > news >正文

企业信用信息查询网官网孝感网站seo

企业信用信息查询网官网,孝感网站seo,做淘宝优惠网站,网站可以做二维码导航category与associative作为objective-c的扩展机制的两个特性#xff0c;category即类型#xff0c;可以通过它来扩展方法#xff1b;associative#xff0c;可以通过它来扩展属性#xff1b;在iOS开发中#xff0c;可能category比较常见#xff0c;相对的associativecategory即类型可以通过它来扩展方法associative可以通过它来扩展属性在iOS开发中可能category比较常见相对的associative就用的比较少要用它必须使用objc/runtime.h的头文件然后就可以自由使用objc_getAssociatedObject以及objc_setAssociatedObject我们来看下这两个方法OBJC_EXPORT void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_1);OBJC_EXPORT id objc_getAssociatedObject(id object, const void *key)__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_1); 另外还有一个方法OBJC_EXPORT void objc_removeAssociatedObjects(id object)__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_1); objc_getAssociatedObject、objc_setAssociatedObject、objc_removeAssociatedObjects都是Obj-c中的外联方法object 参数作为待扩展的对象实例key作为该对象实例的属性的键而value就是对象实例的属性的值policy作为关联的策略它的枚举包括enum {OBJC_ASSOCIATION_ASSIGN  0,OBJC_ASSOCIATION_RETAIN_NONATOMIC  1,OBJC_ASSOCIATION_COPY_NONATOMIC  3,OBJC_ASSOCIATION_RETAIN  01401,OBJC_ASSOCIATION_COPY  01403};具体我就多说了可以看得懂的。 另外objc_removeAssociatedObjects可以删除指定对象实例的所有扩展属性。 现在看一个简单的例子引用网上的例子:http://code4app.com/ios/Block-UI/504fe65d6803faa33f000003  这里定义了一个alert view的按钮UIButton *button  [UIButton buttonWithType:UIButtonTypeRoundedRect];[viewController.view addSubview:button];button.frame  CGRectMake(50, 50, 100, 44);[button setTitle:alert view forState:UIControlStateNormal];现在对UIButton通过使用category对其进行方法扩展implementation UIControl (BUIControl)…...- (void)handleControlEvent:(UIControlEvents)event withBlock:(void(^)(id sender))block {NSString *methodName  [UIControl eventName:event];NSMutableDictionary *opreations  (NSMutableDictionary*)objc_getAssociatedObject(self, OperationKey);if(opreations  nil){opreations  [[NSMutableDictionary alloc] init];objc_setAssociatedObject(self, OperationKey, opreations, OBJC_ASSOCIATION_RETAIN);}[opreations setObject:block forKey:methodName];[self addTarget:self action:NSSelectorFromString(methodName) forControlEvents:event];}objc_getAssociatedObjectobjc_setAssociatedObject进行属性扩展 OperationKey是一个字符类型这里表示一个键如果Opreations为空会setAssociatedObject一个新的opreations对象到对应键的值中间。 addTarget:action:forControlEvents对于触摸事件进行目标绑定。 NSSelectorFromString(methodName) 将触发方法-(void)UIControlEventTouchDown{[self callActionBlock:UIControlEventTouchDown];}-(void)UIControlEventTouchDownRepeat{[self callActionBlock:UIControlEventTouchDownRepeat];}-(void)UIControlEventTouchDragInside{[self callActionBlock:UIControlEventTouchDragInside];}-(void)UIControlEventTouchDragOutside{[self callActionBlock:UIControlEventTouchDragOutside];}-(void)UIControlEventTouchDragEnter{[self callActionBlock:UIControlEventTouchDragEnter];}-(void)UIControlEventTouchDragExit{[self callActionBlock:UIControlEventTouchDragExit];}-(void)UIControlEventTouchUpInside{[self callActionBlock:UIControlEventTouchUpInside];}-(void)UIControlEventTouchUpOutside{[self callActionBlock:UIControlEventTouchUpOutside];}-(void)UIControlEventTouchCancel{[self callActionBlock:UIControlEventTouchCancel];}-(void)UIControlEventValueChanged{[self callActionBlock:UIControlEventValueChanged];}-(void)UIControlEventEditingDidBegin{[self callActionBlock:UIControlEventEditingDidBegin];}-(void)UIControlEventEditingChanged{[self callActionBlock:UIControlEventEditingChanged];}-(void)UIControlEventEditingDidEnd{[self callActionBlock:UIControlEventEditingDidEnd];}-(void)UIControlEventEditingDidEndOnExit{[self callActionBlock:UIControlEventEditingDidEndOnExit];}-(void)UIControlEventAllTouchEvents{[self callActionBlock:UIControlEventAllTouchEvents];}-(void)UIControlEventAllEditingEvents{[self callActionBlock:UIControlEventAllEditingEvents];}-(void)UIControlEventApplicationReserved{[self callActionBlock:UIControlEventApplicationReserved];}-(void)UIControlEventSystemReserved{[self callActionBlock:UIControlEventSystemReserved];}-(void)UIControlEventAllEvents{[self callActionBlock:UIControlEventAllEvents];}注意到这里会去执行callActionBlock:方法- (void)callActionBlock:(UIControlEvents)event {NSMutableDictionary *opreations  (NSMutableDictionary*)objc_getAssociatedObject(self, OperationKey);if(opreations  nil) return;void(^block)(id sender)  [opreations objectForKey:[UIControl eventName:event]];if (block) block(self);}最终会从扩展属性中得到^block关于^block可以参考http://blog.csdn.net/pjk1129/article/details/6577097 最后调用[button handleControlEvent:UIControlEventTouchUpInside withBlock:^(id sender) {UIAlertView *alert  [[UIAlertView alloc] initWithTitle:alertmessage:nildelegate:nilcancelButtonTitle:okotherButtonTitles:other,nil];}];点击按钮就会触发一个block函数。 这样就实现了objective-c的两种扩展机制。转载于:https://www.cnblogs.com/liping13599168/archive/2012/09/13/2682664.html
http://www.zqtcl.cn/news/663738/

相关文章:

  • 温州网站建设服务建设商务网站公司
  • 导视设计网站推荐创业平台的选择
  • 营销网站建设设计义乌 网站制作
  • 南通企业网站建设公司庆阳网站建设与制作
  • 做k12网站wordpress调用第一张图片不显示
  • 网站建设和维护要点网站建设完提交百度
  • app开发人员网站上海保洁服务网站建设
  • 周口网站制作公司哪家好苏州高新区住建局官网
  • 建设特效网站自助网站建设系统
  • 用软件做的网站权限管理如何让自己的网站被百度收录
  • 简历做的很棒的网站杭州公司网站建设电话
  • 购买腾讯云主机可以直接做网站舒兰网站建设
  • 环保主题静态网站php 手机网站源码
  • 做网站找哪家好要钱吗小程序开发合同
  • 速成美站东莞网站建设 包装材料
  • 丹阳网站建设案例自己做个网站怎么赚钱
  • 净水机企业网站源码浏览器下载安装2022最新版
  • 高端网站建设四川网页版微信怎么下载
  • 青岛做网站皆赴青岛博采wordpress怎么改密码忘记
  • 深圳最好的网站建设广西论坛网站建设
  • html5网站设计网站建设 广西
  • 顺德手机网站设计价位网站开发学习流程图
  • 班级网站设计合肥蜀山网站开发
  • 杭州网站建设培训ck播放器整合WordPress
  • 网站建设是什么软件品牌策划公司哪家好推荐
  • 网站转跳怎么做餐饮vi设计
  • 刘连康seo培训哪家强网站优化推广平台
  • 网站推广内容滁州做网站的
  • 黄山做网站公司山东省住房和城乡建设厅举报电话
  • 中医科网站建设素材上海文明城市建设网站