SEL类型

作者: MarkTang | 来源:发表于2016-01-09 00:50 被阅读294次
    代表方法的签名 
    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;
    

    相关文章

      网友评论

          本文标题:SEL类型

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