iOS分类中通过runtime添加动态属性
来源:互联网 发布:java官网jdk 编辑:程序博客网 时间:2024/04/28 00:38
感谢原作者: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 (Extention)@property (copy, nonatomic) NSString *name;-(void)saySex;@end#import "Person+Extention.h"#import <objc/runtime.h>@implementation Person (Extention)//定义常量 必须是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类实现
1 0
- iOS分类中通过runtime添加动态属性
- iOS分类中通过runtime添加动态属性
- iOS分类中通过runtime添加动态属性
- iOS分类中通过runtime添加动态属性
- iOS分类中通过runtime添加动态属性
- iOS在分类中添加属性,运行时编程,objc runtime 动态增加属性
- RunTime应用--动态给分类添加属性
- IOS通过runtime给category添加属性
- iOS (Category)runtime动态添加属性
- runtime动态添加属性
- Runtime 动态添加属性
- runtime -- 动态添加属性
- iOS runtime机制实现给分类添加属性
- iOS Runtime 动态添加属性不能添加intrinsic类型
- Runtime之分类添加属性
- iOS开发------runtime关联对象(动态添加属性)
- iOS 在分类中添加属性
- 动态添加属性(Runtime)
- C++ map
- 五大常用算法——分治算法
- SQL优化一则:灵活运用字段的选择性
- ANDROID L - Material Design详解(动画篇)
- StretchDIBits 函数
- iOS分类中通过runtime添加动态属性
- ANDROID L - Material Design详解(UI控件)
- JAVA软件工程师应该具备的基本素质(技能)
- springmvc中的@Responsebody与@RequestBody
- VIJOS-P1406 古韵之鹊桥相会 最短路 模型
- zTree默认打开结点的办法
- 解决多线程下单例模式中"懒汉模式"(延迟加载)的问题
- 剑指offer面试题之求二叉树的深度
- UITableView的性能优化? 滑动的时候有种卡的感觉是为什么?怎么解决?