美文网首页iOS收集iOS讨论组iOS Developer
runtime常见用法一(给分类添加属性)

runtime常见用法一(给分类添加属性)

作者: BigBowen | 来源:发表于2017-04-27 00:15 被阅读227次

开发中,我们常常会给系统提供的类添加分类,在分类里面可以添加方法,以方便我们使用,但是很多人遇到想给分类添加属性的情况,但是会遇到以下问题:
1.当给分类添加属性的时候,系统不会帮你生成该属性对应的setter和getter方法,也不会生成带下划线的成员变量,不过这个属性会出现在属性列表中
2.声明了属性后,我们还是可以在.m文件中给该属性添加setter和getter方法,不过,由于系统不会生成带下划线的成员变量,所以,在这两个方法内也没法直接给该属性赋值
那么,我们怎么样才能给分类添加一个属性,而且这个属性又有setter和getter方法呢?这时候我们就需要用到runtime了,我们利用runtime给该对象的属性关联一个值,在.m文件中实现以下代码即可:

Snip20170426_82.png

ps:对于想亲自验证结果的小猿,可以使用以下方法验证:

//使用前记得#import <objc/runtime.h>
//返回方法列表
class_copyMethodList(<#__unsafe_unretained Class cls#>, <#unsigned int *outCount#>)
//返回属性列表
class_copyPropertyList(<#__unsafe_unretained Class cls#>, <#unsigned int *outCount#>)
//返回成员变量列表
class_copyIvarList(<#__unsafe_unretained Class cls#>, <#unsigned int *outCount#>)

相关文章

网友评论

    本文标题:runtime常见用法一(给分类添加属性)

    本文链接:https://www.haomeiwen.com/subject/jhzwzttx.html