zoukankan      html  css  js  c++  java
  • NSObject的常见方法

    代码:

    #import <Foundation/Foundation.h>
    
    /******************************
     * Learning协议
     ******************************/
    @protocol Learning
    
    - (void)learn;
    
    @end
    
    /******************************
     * Person类
     ******************************/
    @interface Person : NSObject
    @end
    
    @implementation Person
    @end
    
    /******************************
     * Student类
     ******************************/
    @interface Student : Person <Learning>
    @end
    
    @implementation Student
    
    - (void)learn {
        NSLog(@"Student - learn");
    }
    
    @end
    
    /******************************
     * GoodStudent类
     ******************************/
    @interface GoodStudent : Student
    @end
    
    @implementation GoodStudent
    
    - (void)learn {
        NSLog(@"GoodStudent - learning");
    }
    @end
    
    void isKindOfClassTest(void);
    void isMemberOfClassTest(void);
    void conformsToProtocolTest(void);
    void instanceResopnsesToSelectorTest(void);
    void respondsToSelectorTest(void);
    
    /******************************
     * main函数
     ******************************/
    int main(int argc, const char* argv[]) {
        isKindOfClassTest();
        isMemberOfClassTest();
        conformsToProtocolTest();
        instanceResopnsesToSelectorTest();
        respondsToSelectorTest();
        return 0;
    }
    
    void isKindOfClassTest(void) {
        Student* student = [[Student alloc] init];
    
        // 实例方法isKindOfClass:用于判断一个实例是否是某个类或其子类的实例
        NSLog([student isKindOfClass:[Person class]] ? @"YES" : @"NO");
        NSLog([student isKindOfClass:[Student class]] ? @"YES" : @"NO");
        NSLog([student isKindOfClass:[GoodStudent class]] ? @"YES" : @"NO");
    }
    
    void isMemberOfClassTest(void) {
        Student* student = [[Student alloc] init];
    
        // 实例方法isMemberOfClass:用于判断一个实例是否是某个类实例
        NSLog([student isMemberOfClass:[Person class]] ? @"YES" : @"NO");
        NSLog([student isMemberOfClass:[Student class]] ? @"YES" : @"NO");
        NSLog([student isMemberOfClass:[GoodStudent class]] ? @"YES" : @"NO");
    }
    
    void conformsToProtocolTest(void) {
        Person* person = [[Person alloc] init];
        Student* student = [[Student alloc] init];
        GoodStudent* goodStudent = [[GoodStudent alloc] init];
    
        // 实例方法conformsToProtocol:用于判断一个类是否采用了某个协议
        NSLog([person conformsToProtocol:@protocol(Learning)] ? @"YES" : @"NO");
        NSLog([student conformsToProtocol:@protocol(Learning)] ? @"YES" : @"NO");
        NSLog([goodStudent conformsToProtocol:@protocol(Learning)] ? @"YES" : @"NO");
    }
    
    void instanceResopnsesToSelectorTest(void) {
        // 类方法instancesRespondToSelector:用于判断一个类的实例是否可以响应给定的消息
        NSLog([Person instancesRespondToSelector:@selector(learn)] ? @"YES" : @"NO");
        NSLog([Student instancesRespondToSelector:@selector(learn)] ? @"YES" : @"NO");
        NSLog([GoodStudent instancesRespondToSelector:@selector(learn)] ? @"YES" : @"NO");
    }
    
    void respondsToSelectorTest(void) {
        Person* person = [[Person alloc] init];
        Student* student = [[Student alloc] init];
        GoodStudent* goodStudent = [[GoodStudent alloc] init];
    
        // 实例方法respondsToSelector:用于判断某个类的实例是否可以响应给定的消息
        NSLog([person respondsToSelector:@selector(learn)] ? @"YES" : @"NO");
        NSLog([student respondsToSelector:@selector(learn)] ? @"YES" : @"NO");
        NSLog([goodStudent respondsToSelector:@selector(learn)] ? @"YES" : @"NO");
    }

    输出:

    YES
    YES
    NO
    NO
    YES
    NO
    NO
    YES
    YES
    NO
    YES
    YES
    NO
    YES
    YES
  • 相关阅读:
    8. 使用Java+TestNG+Selenium搭建测试框架做Web UI自动化测试
    7. Selenium的基本使用
    6. Selenium测试工具简介
    4.自动化测试框架及知识体系
    3.当前主流自动化测试工具的对比选型
    2.自动化测试策略
    1.自动化测试概述
    eclipse工程当中的.classpath 和.project文件什么作用?
    Git 命令
    删除指定字符串的算法题,面试时候没做出来
  • 原文地址:https://www.cnblogs.com/xwoder/p/4252245.html
Copyright © 2011-2022 走看看