iOS_Runtime4_动态添加属性
来源:互联网 发布:js有哪些内置对象 编辑:程序博客网 时间:2024/06/05 06:49
Runtime
动态添加属性,主要是为系统的类写分类,并且属性定义变量,可以不写策略,需要手动实现set
以及get
方法。- 在
set
方法中可以利用runtime
实现动态添加属性。 - 在
get
方法中可以利用runtime
实现属性值的获取。
为UIImage
的类目添加属性imageUrl
使用代码示例:
// UIImage+Image.h@interface UIImage (Image)@property (nonatomic, copy) NSString *imageUrl; // 动态添加属性@end// UIImage+Image.m@implementation UIImage (Image)#pragma mark - 动态添加属性- (void)setImageUrl:(NSString *)imageUrl{ objc_setAssociatedObject(self, "imageUrl", imageUrl, OBJC_ASSOCIATION_COPY_NONATOMIC);}- (NSString *)imageUrl{ return objc_getAssociatedObject(self, "imageUrl");}@end// 调用示例:UIImage *image = [[UIImage alloc]init];image.imageUrl = @"http://";
总结:
1. 动态添加属性,将会调用方法void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)
为该类对应的属性进行赋值,在这个方法中存在四个参数,无返回值。
id object
给哪个对象添加属性 const void *key
属性名称 id value
属性值 objc_AssociationPolicy policy
保存策略,这是一个枚举值。保存策略枚举值:
OBJC_ASSOCIATION_ASSIGN
弱引用,assign
OBJC_ASSOCIATION_RETAIN_NONATOMIC
强引用,retain,nonatomic
OBJC_ASSOCIATION_COPY_NONATOMIC
强引用,copy,nonatomic
OBJC_ASSOCIATION_RETAIN
强引用,retain,atomic
OBJC_ASSOCIATION_COPY
强引用,copy,atomic
2. 在get
方法中,将会调用方法id objc_getAssociatedObject(id object, const void *key)
获取对应的属性值,在这个方法中存在两个参数,一个泛指类型的返回值。
id object
给哪个对象添加属性 const void *key
属性名称 id
泛指类型的返回值iOS_Runtime1_消息发送机制
iOS_Runtime2_方法交换
iOS_Runtime3_动态添加方法
iOS_Runtime5_消息转发
iOS_Runtime6_字典转化为模型应用
代码地址:
https://github.com/FlyingKuiKui/RunTime.git
阅读全文
0 0
- iOS_Runtime4_动态添加属性
- 动态添加属性 C#
- javascript动态添加属性
- C#动态添加属性
- 动态添加删除属性
- runtime动态添加属性
- category动态添加属性
- 动态添加class属性
- Category 动态添加属性
- Runtime 动态添加属性
- runtime -- 动态添加属性
- JavaScript对象动态添加属性
- C#类动态添加属性
- easyui textbox动态添加属性
- 动态添加js对象属性
- 动态添加属性(Runtime)
- js 对象动态添加属性、合并属性
- JS动态创建表格,动态设置属性,动态添加事件
- 剑指offer——斐波那契数列
- 回文 (dp)
- es6中为什么要bind(this)
- Discuz触屏手机版显示分类信息的修改方法
- 【leetcode】第48题 Rotate Image 题目+解析+代码
- iOS_Runtime4_动态添加属性
- 基于AspectJ的注解方式进行AOP开发
- Axure chrome 扩展显示已损坏的解决方法 写在前面的话: 之前用的好好的Axure chrome 扩展如今却并不能使用,一直说扩展已损坏,额,上网下了几个.crx文件都没有用……
- pygame按键对应
- cube闪烁效果
- JavaBean规范
- 马旭东老师简介
- 字符串长度
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序