首页 > 代码库 > NSObject的常见方法

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");}@endvoid 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");}

输出:

YESYESNONOYESNONOYESYESNOYESYESNOYESYES

 

NSObject的常见方法