zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    vim how to set nu with 0-index instead of 1-index
    @property的介绍与使用
    X[:,0]和X[:,1]
    the best guide for git
    sorted(列表)
    Java的匿名函数
    成员变量和局部变量的区别
    Java数组合并
    Java中random的使用
    Git常见错误---git branch不显示本地分支的问题
  • 原文地址:https://www.cnblogs.com/yaowen/p/5311921.html
Copyright © 2011-2022 走看看