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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 wangchao1992 于 2015-8-17 17:52 编辑

动态类型检测:
      1、判断类型
       1)isKindOfClass判断某个对象是否是类的实例对象,或者子类的实例对象(对象和类)
             isKindOfClass使用格式:[对象 isKindOfClass 类对象];
           Animal *ani = [Animal new];
           BOOL isInstance = [ani isKindOfClass:[Animal class]];
               //1                      ani是 Animal类的实例   
          Dog *dog = [Dog new];
          isInstance = [dog isKindOfClass:[Animal class]];
         // 1     dog是Animal子类Dog的实例对象,所以是1

      2) isMemberOfClass 判断对象是否是指定类的实例对象(对象和类)
          格式:  [对象  isMemberOfClass: 类对象]
        Animal *ani = [Animal new];
        isInstance = [dog isMemberOfClass:[Animal class]];
        //0    dog不是我们 Animal类的实例
        isInstance = [ani isMemberOfClass:[Animal class]];
        //1    ani是 Animal类的实例

      3) 、判断类是否是指定类的子类(类和类之间的关系)
         格式: [类A isSubclassOfClass:类B];
             判断类A是否是类B的子类  是 YES   不是 NO
        BOOL isSub = [Dog isSubclassOfClass:[Animal class]];
                    1             Dog 类继承自 Animal
                                     Dog是Animal的子类

        // 通过对象来获取类对象
        isSub = [[dog class] isSubclassOfClass:[ani class]];
        //    1                                             必须是  Class 类型
        //使用类型获取类对象
        isSub = [Dog isSubclassOfClass:[Animal class]];
       //  1        Dog  是 Animal 的子类


Animal 头文件
#import <Foundation/Foundation.h>
@interface Animal : NSObject
-(void)run;
@end
Dog 头文件
#import "Animal.h"
@interface Dog : Animal
-(void)eat;
@end


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马