iOS分类中通过runtime添加动态属性
2016-04-30 23:07
399 查看
首先定义一个类
定义分类
总结:在分类中@property不会生成_变量,也不会实现getter和setter方法,我们可以手动实现如下
但是这样是没什么意义的,而且分类中不允许定义变量,所以只能用runtime类实现
文/奋斗的菜鸟(简书作者)
原文链接:http://www.jianshu.com/p/0ca0bbb0b200
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
#import@interface Person : NSObject @property (assign, nonatomic) NSInteger age; -(void)run; @end #import "Person.h" @implementation Person -(void)run{ NSLog(@"%s",__func__); } @end
定义分类
#import "Person.h" @interface Person (PersonExtention) @property (copy, nonatomic) NSString *name; -(void)saySex; @end #import "Person+PersonExtention.h" #import <objc/runtime.h> @implementation Person (PersonExtention) //定义常量 必须是C语言字符串 static char *PersonNameKey = "PersonNameKey"; -(void)setName:(NSString *)name{ /* OBJC_ASSOCIATION_ASSIGN; //assign策略 OBJC_ASSOCIATION_COPY_NONATOMIC; //copy策略 OBJC_ASSOCIATION_RETAIN_NONATOMIC; // retain策略 OBJC_ASSOCIATION_RETAIN; OBJC_ASSOCIATION_COPY; */ /* * id object 给哪个对象的属性赋值 const void *key 属性对应的key id value 设置属性值为value objc_AssociationPolicy policy 使用的策略,是一个枚举值,和copy,retain,assign是一样的,手机开发一般都选择NONATOMIC objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy); */ objc_setAssociatedObject(self, PersonNameKey, name, OBJC_ASSOCIATION_COPY_NONATOMIC); } -(NSString *)name{ return objc_getAssociatedObject(self, PersonNameKey); } -(void)saySex{ NSLog(@"%s----%@",__func__,self); } @end
总结:在分类中@property不会生成_变量,也不会实现getter和setter方法,我们可以手动实现如下
-(NSString *)name{ return @"name"; } -(void)setName:(NSString *)name{ }
但是这样是没什么意义的,而且分类中不允许定义变量,所以只能用runtime类实现
文/奋斗的菜鸟(简书作者)
原文链接:http://www.jianshu.com/p/0ca0bbb0b200
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
相关文章推荐
- iOS瘦身之删除FrameWork中无用mach-O文件
- iOS视图控制器编程指南 --- 设计建议
- iOS开发小技巧--边接受数据边写入文件的两种方法
- iOS备忘录之本地数据详解
- iOS中实现获取文本内容的宽高
- [iOS] KVC 和 KVO
- iOS小demo之跳转到特定页面
- iOS视图控制器编程指南 --- 视图控制器层次结构
- iOS笔记----Hybrid应用基本核心
- CISCO IOS 文件名
- iOS中,几种延时处理得方法
- ios拼图游戏(一)之分割图片
- 安卓手机机短信如何导入苹果IOS9以上版本
- IOS学习 导入第三方框架 常见问题汇总
- iOS--- 实现加入购物车的效果
- iOS - 两种常见的桥接方式
- iOS系统通讯录授权,获取,修改,创建联系人
- 通过崩溃trace来查找问题原因
- 浅谈iOS单元测试
- iOS视图控制器编程指南 --- 视图控制器所扮演的角色