SEL类型

代表方法的签名 
SEL  sel = @selector(setAge:);
Person * p = [Person new];

BOOL flag = [p respondsToSelector:sel];
类调用就判断类方法 对象使用就是用对象调用
SEL  sel = @selector(setAge:);
Person * p = [Person new];

[p performSelector:sel];
配合对象调用方法

参数只能是对象,如果参数多余两个不能调用
根据对象调用制定方法和制定参数
作为方法的形参

//问题1:SEL是什么类型?
答:
数据类型
SEL类型代表着方法的签名,在类对象的方法列表中存储着该签名与方法代码的对应关系
//问题2:SEL有什么作用?
答:
SEL类型的第一个作用, 配合对象/类来检查对象/类中有没有实现某一个方法
SEL类型的第二个作用, 配合对象/类来调用某一个SEL方法
配合对象将SEL类型作为方法的形参
          
把方法打包成一个具有SEL签名的对象
//问题3:哪个方法是用来检验对象是否实现了某个方法?
答:
[perfrom]
  判断实例是否实现某个对象方法
  
  - (BOOL)respondsToSelector: (SEL)selector
  判断类是否实现某个类方法
  
  + (BOOL)instancesRespondToSelector:(SEL)aSelector;
//问题4:哪些方法是用来调用对象中SEL类型对应的方法?
答:
perfromSelectToWith:

让对象执行某个方法

- (id)performSelector:(SEL)aSelector;
- (id)performSelector:(SEL)aSelector withObject:(id)object;
- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容