• oc-26-动态类型检测


    /**
     1).判断对象是不是指定类的对象或者指定类的子类对象.
     - (BOOL)isKindOfClass:(Class)aClass;
     
     2).判断对象是不是1个特定类型的对象,不包括子类.
     - (BOOL)isMemberOfClass:(Class)aClass;
     
     3).判断1个类是不是另外1个类的子类.
     + (BOOL)isSubclassOfClass:(Class)aClass;
     
     4).判断对象中是否能响应指定的方法. 这个最常用.
     - (BOOL)respondsToSelector:(SEL)aSelector;
     
     5).判断类中是否能响应指定方法.
     +(BOOL)instancesRespondToSelector:(SEL)aSelector;
     
     */
    #import <Foundation/Foundation.h>
    #import "DogSon.h"
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            
            // 3).判断1个类是不是另外1个类的子类.
            Class c = [Dog class];
            BOOL res = [DogSon isSubclassOfClass:c];
            NSLog(@"%d",res);
    
        }
        return 0;
    }
    // 判断 某个类是否能相应制定方法
    void demo3(){
        SEL s = @selector(play);
        BOOL res = [Dog instancesRespondToSelector:s];
        NSLog(@"%d",res);
    
    }
    // 判断某个对象能否相应某个方法
    void demo2()
    {
        Dog *son = [DogSon new];
        
        SEL s = @selector(play);
        
        BOOL res =  [son respondsToSelector:s];
        
        NSLog(@"%d",res);
    }
    // 判断对象是不是1个特定类型的对象,不包括子类.不包括父类
    void demo1(){
        DogSon *son = [DogSon new];
        
        // 获取狗的类对象
        Class dog = [Dog class];
        
        // 判断对象是不是1个特定类型的对象,不包括子类.不包括父类
        BOOL res = [son isMemberOfClass:dog];
        
        NSLog(@"%d",res);
    }
    
    // 判断某个对象是否是某个类创建出来的对象
    void demo()
    {
        DogSon *son = [DogSon new];
        
        // 获取小狗的类对象
        Class dog = [DogSon class];
        
        //检查son对象是否是小狗类创建出来的对象
        BOOL res = [son isKindOfClass:dog];
        
        NSLog(@"%d",res);
    }
    #import <Foundation/Foundation.h>
    #import "Dog.h"
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            
            Dog *d = [Dog new];
            //- (void)run;
            [d performSelector:@selector(run)];
            //- (void)name:(NSString *)name;
            [d performSelector:@selector(name:) withObject:@"哈利"];//方法名是name:,performSelector:withObject:是方法名,
    
        }
        return 0;
    }
  • 相关阅读:
    JS日期格式转换
    VMware虚拟化集群的配置(一)
    网络初级篇之STP(概念原理)
    运维学习篇之jenkins的安装(CentOS7)
    网络初级篇之配置telnet登录网络设备(实验)
    Linux操作篇之OpenKM的安装(汉化)
    网络初级篇之网络设备的FTP(原理与实验)
    网络初级篇之直连路由与静态路由(原理与实验)
    网络初级篇之DHCP原理与配置(原理与实验)
    网络初级篇之OSPF(二)实验
  • 原文地址:https://www.cnblogs.com/yaowen/p/5311921.html
Copyright © 2020-2023  润新知