A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mazhichao 中级黑马   /  2015-7-5 10:39  /  1011 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、+(BOOL) isKindOfClass:(Class)aClass
         判断某个对象是否是类的实例对象,或者子类的实例对象
         格式:实例对象A isKindOfClass: 类对象]
2、+(BOOL)isMemberOfClass:(Class)aClass
         判断对象是否是制定类的实例对象,不管是否是子类的实例对象
         格式:[实例对象A isMemberOfClass:类A]
3、+(BOOL) isSubclassOfClass:(Class)aClass
         判断类是否是制定类的子类(类与类之间的关系)
         格式:[子类A isSubclassOfClass:父类B]
定义三个类,实现动态类型检测说明
  1. 1、@interface Animal: NSObject
  2. 2、@interface Dog : Animal
  3. 3、@interface person : NSObject
复制代码

测试实现函数main.m
  1. #import <Foundation/Foundation.h>
  2. #import "Dog.h"
  3. #import "Proson.h"
  4. int main(int argc, const char * argv[]) {
  5.     @autoreleasepool {
  6.         Animal *ani =[Animal new];
  7.         
  8.         //ani是Animal的实例对象
  9.         //动态类型检测
  10.         //1、判断类型
  11.         //判断某个对象是否是类的实例对象,或者子类的实例对象
  12.         //(BOOL)isKindOfClass:(Class)aClass
  13.         //isKindOfCladd使用格式:[实例对象A isKindOfClass: 类对象]
  14.         BOOL isInstance;
  15.         isInstance = [ani isKindOfClass:[Animal class]];
  16.         NSLog(@"%d",isInstance);
  17.         Dog *dog=[Dog new];
  18.         isInstance = [dog isKindOfClass:[Animal class]];
  19.         NSLog(@"%d",isInstance);
  20.         Proson *p = [Proson new];
  21.         isInstance = [p isKindOfClass:[Animal class]];
  22.         NSLog(@"%d",isInstance);
  23.         
  24.         //2)isMemberOfClass 判断对象是否是制定类的实例对象,不管是否是子类的实例对象
  25.         //(BOOL)isMemberOfClass:(Class)aClass;
  26.         //格式:[实例对象A isMemberOfClass:类A]
  27.         isInstance = [dog isMemberOfClass:[Animal class]];
  28.         //0
  29.         isInstance = [ani isMemberOfClass:[Animal class]];
  30.         //1
  31.         
  32.         //3、判断类是否是制定类的子类(类与类之间的关系)
  33.         //(BOOL)isSubclassOfClass:(Class)aClass;
  34.         //格式:子类A isSubclassOfClass:父类B
  35.         isInstance = [Dog isSubclassOfClass:[Animal class]];
  36.         //[Dog isSubclassOfClass:[Animal class]];==[[dog class] isSubclassOfClass:[ani class]]==1;
  37.         //因为Dog是Animal的子类
  38.         isInstance = [Dog isSubclassOfClass:[Animal class]];
  39.         
  40.         
  41.     }
  42.     return 0;
  43. }
复制代码

1 个回复

倒序浏览
类于类之间的关系这是什么方向的啊?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马