代码:
#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
时间: 2024-10-18 02:10:13