代表方法的签名
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;
网友评论