---------------
FKEatable.h
---------------
#import
<Foundation/Foundation.h>
@protocol
FKEatable
@optional
- (void) taste;
@optional
- (void) taste;
@end
--------------- FKApple.h
---------------
#import
"FKEatable.h"
@interface FKApple : NSObject <FKEatable>
@interface FKApple : NSObject <FKEatable>
@end
---------------
FKApple.m ---------------
#import
"FKApple.h"
@implementation FKApple
@implementation FKApple
@end
---------------
main.m
---------------
#import
<Foundation/Foundation.h>
#import
"FKApple.h"
int main()
{
FKApple* app = [[FKApple alloc] init];
NSLog(@"%@" , [app class]);
NSLog(@"app是否为FKApple的实例:%d", [app isMemberOfClass: FKApple.class]);
NSLog(@"app是否为NSObject的实例:%d",[app isMemberOfClass: NSObject.class]);
NSLog(@"app是否为FKApple及其子类的实例:%d",[app isKindOfClass: FKApple.class]);
NSLog(@"app是否为NSObject及其子类的实例:%d",[app isKindOfClass: NSObject.class]);
NSLog(@"app是否实现FKEatable协议:%d",[app conformsToProtocol: @protocol(FKEatable)]);
{
FKApple* app = [[FKApple alloc] init];
NSLog(@"%@" , [app class]);
NSLog(@"app是否为FKApple的实例:%d", [app isMemberOfClass: FKApple.class]);
NSLog(@"app是否为NSObject的实例:%d",[app isMemberOfClass: NSObject.class]);
NSLog(@"app是否为FKApple及其子类的实例:%d",[app isKindOfClass: FKApple.class]);
NSLog(@"app是否为NSObject及其子类的实例:%d",[app isKindOfClass: NSObject.class]);
NSLog(@"app是否实现FKEatable协议:%d",[app conformsToProtocol: @protocol(FKEatable)]);
}
一、本节代码涉及到的知识点:
1.NSObject提供了以下三个方法可以判断类的继承关系:
① isKindOfClass 需要传入一个Class参数,用于判断该对象是否是该类的实例或该类子类的实例。
② isMemberOfClass 需要传入一个Class参数,用于判断该对象是否是该类的实例。
③ conformsToProtocol 需要传入一个Protocol参数,用于检查该对象是否实现了指定协议类的方法。