iOS 中 SEL 类型
什么是 SEL 类型
SEL
类型代表着方法的签名,在类对象的方法列表中存储着该签名与方法代码的对应关系每个类的方法列表都存储在类对象中
每个方法都有一个与之对应的
SEL
类型的对象根据一个
SEL
对象就可以找到方法的地址,通过方法的地址就可以调用方法
SEL 类型的定义
复制代码
SEL 对象的创建
将 test 方法包装成
SEL
对象
复制代码
将一个字符串方法 test 转换成为
SEL
对象
复制代码
SEL 对象其他用法
将
SEL
对象转换为NSString
对象
复制代码
调用对象 p 的 test 方法
复制代码
首先把 test 这个方法名包装成
SEL
类型的对象根据
SEL
类型找到该类的类对象在类对象的方法列表中找对应的该方法,找到则执行该代码
如果没有找到,则根据类对象上的父类对象指针去父类的类对象的方法列表中查找
如果找到了则执行,如果依然没有找到,一直往上找,直到基类(
NSObject
),如果都没有找到就报错注意:
在整个操作中有缓存,第一次在方法列表中是一个一个的找,如果找到对应方法,那么就会将该方法放入缓存,之后再用到的时候就直接使用
SEL 类型的作用
配合对象、类来检查对象、类中有没有实现一个方法
注:
如果通过对象调用该方法,则判断对象方法的实现<br>如果通过类调用该方法,则判断有没有类方法的实现
复制代码
配合对象或者类来调用某一个
SEL
方法
复制代码
配合对象将
SEL
类型作为方法的形参
复制代码
版权声明: 本文为 InfoQ 作者【NewBoy】的原创文章。
原文链接:【http://xie.infoq.cn/article/8de50ba6b6285109a1d2ab5d7】。文章转载请联系作者。
评论