049. isKindOfClass 检查继承关系

来源:互联网 发布:贪心算法解决tsp问题 编辑:程序博客网 时间:2024/05/21 04:16
---------------  FKEatable.h  ---------------
#import <Foundation/Foundation.h>
@protocol FKEatable
@optional
- (
void) taste;
@end
---------------  FKApple.h  ---------------
#import "FKEatable.h"
@interface FKApple : NSObject <FKEatable>
@end
---------------  FKApple.m  ---------------
#import "FKApple.h"
@implementation FKApple
@end
---------------  main.m  ---------------
#import <Foundation/Foundation.h>
#import "FKApple.h"
int main()
{
    
FKApple* app = [[FKApple allocinit];
    
NSLog(@"%@" , [app class]);
    
NSLog(@"app是否为FKApple的实例:%d", [app isMemberOfClassFKApple.class]);
    
NSLog(@"app是否为NSObject的实例:%d",[app isMemberOfClassNSObject.class]);
    
NSLog(@"app是否为FKApple及其子类的实例:%d",[app isKindOfClassFKApple.class]);
    
NSLog(@"app是否为NSObject及其子类的实例:%d",[app isKindOfClassNSObject.class]);
    
NSLog(@"app是否实现FKEatable协议:%d",[app conformsToProtocol@protocol(FKEatable)]);
}

一、本节代码涉及到的知识点:
1.NSObject提供了以下三个方法可以判断类的继承关系:
  ① isKindOfClass 需要传入一个Class参数,用于判断该对象是否是该类的实例或该类子类的实例。
  ② isMemberOfClass 需要传入一个Class参数,用于判断该对象是否是该类的实例。
  ③ conformsToProtocol 需要传入一个Protocol参数,用于检查该对象是否实现了指定协议类的方法。
0 0
原创粉丝点击