iOS (Category)runtime动态添加属性
2015-12-18 11:50
741 查看
Category模式用于向已经存在的类添加方法从而达到扩展已有类的目的,在很多情形下Category也是比创建子类更优的选择。新添加的方法同样也会被被扩展的类的所有子类自动继承。 如果我们能在Category中添加自定义的属性那岂不是更好。 属性其实就是set/get函数,下面直接上代码: 使用前请注意导入 #import <objc/runtime.h>
使用下面两个函数 OBJC_EXPORT void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy) OBJC_EXPORT id objc_getAssociatedObject(id object, const void *key)
我们定义一个Category,
UIImageView+PropertyDemo.h
@interface UIImageView (PropertyDemo) - (void) setStyle:(NSObject*) style; - (NSObject *) getStyle; @end
UIImageView+PropertyDemo.m
@implementation UIImageView (PropertyDemo) static char styleKey; - (void) setStyle:(NSObject *) style { objc_setAssociatedObject(self, &styleKey, style, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } - (UIColor *) getStyle { return objc_getAssociatedObject(self, &styleKey); } @end
外部调用:
UIImageView *mImageView = [UIImageView alloc]initWithImage:[UIImage imageNamed:@"image.png"]]; mImageView.style = @"style0"; NSLog(@"The style is %@",mImageView.style);
转载请留名:/article/10326967.html
相关文章推荐
- iOS 消息通知
- iOS崩溃调试的使用和技巧总结
- iOS 视图,动画渲染机制探究
- iOS 视图,动画渲染机制探究
- iOS 判断用户是否允许接收远程通知
- 苹果开发者账号注册
- iOS开发-使用Storyboard进行界面跳转及传值
- iOS开发多线程篇—创建线程
- iOS开发多线程篇—多线程简单介绍
- 四大因素决定 浅析iOS为什么比安卓流畅
- ios学习备份记录
- iOS状态栏隐藏
- ios搭一个简易计算器(利用masonry布局)
- iOS蓝牙开发把16进制字符串转换成NSData的方法
- iOS中通知的添加和移除
- iOS 富文本
- iOS8 OCTouchID的简单使用 指纹识别
- iOS 关闭布局向四周延伸
- iOS疯狂详解之NSFileHandle
- 《IOS视频录制,本地视频播放,剪切,合并》系列(2)视频录制并保存