一起Talk IOS吧(第二十一回 多态中的类型检查)

看官们,我们在上一章回末尾提到了类型转换的条件,本章回中我们详细分析一下如何检查这些条件。

检查条件有专门的方法,我们主要介绍两个方法:

isKindOfClass和isMemberOfClass,

接下来我们分别介绍它们。

isKindOfClass:Obj 用来检查某个对象的类是否为Obj对象的类或者其子类,如果是,返回YES,否则返回NO。通常有二种情况会返回YES。

  • 1.被检查对象的类与Obj的类相同;
  • 2.被检查对象的类是Obj对象类的子类;

isMemberOfClass:Obj 用来检查某个对象的类是否为Obj对象的类,如果是,返回YES,否则返回NO。

使用这两个方法时需要传递某个类型的对象,我们通常使用class方法来生成某个类型的对象,在程序中直接使用类名就可以调用此方法。

在程序中isKindOfClass使用的的范围广一些,我们在进行多态类型转换时一定要做类型检查,只有在同一类的体系结构中的类才可以转换,不然会发生错误,即使不发生错误,在转换后使用多态时也会发生运行时错误。

最后,我们对本章回的内容做一个总结:

  • 1.进行类型转换时需要做类型检查,确保两个类都在同一个类体系结构中,这样才可以进行类型转换;
  • 2.检查的方法有两个:isKindOfClass和isMemberOfClass;
  • 3.使用类的class方法可以得到类的对象;

看官们,欲知后事如何且听下回分解!

上一篇:MySql——Explain执行计划详解


下一篇:一起Talk IOS吧(第十四回 类中方法的定义和使用)