美文网首页
isKindOfClass;isSubclassOfClass;

isKindOfClass;isSubclassOfClass;

作者: Lipaper | 来源:发表于2017-07-31 13:34 被阅读0次

    【转】

    在iOS开发中,会遇到需要判断一个对象是否为某类的对象,或者某个子类的对象.判断方法大体有三个isKindOfClass,isSubclassOfClass和isMemberOfClass.他们的区别是什么呢?下面通过代码来验证一下.

    创建父子类关系的类对象

    创建对象

    测试1:isKindOfClass

    isKindOfClass测试

    isKindOfClass测试结果

    测试2:isSubclassOfClass

    isSubclassOfClass测试

    isSubclassOfClass测试结果

    测试3:isMemberOfClass

    isMemberOfClass测试

    测试结果

    结果表明isSubclassOfClass和isKindOfClass的作用基本上是一致都是用来判断一个对象或一个类是否为某个类或者某个类的子类.

    isMemberOfClass 有所不同,只有当类型完全匹配的时候才会返回YES。

    补充:附加测试(isMemberOfClass)

    isMemberOfClass附加测试

    测试结果

    结果令人意外bool7为假,难道上面得出的结论是错误的么?或者textArr不是 NSArray 类型的?打印了一下textArr 结果发现结果为

    textArr类型为NSArray0

    原来textArr 不是NSArray类型实例,通过不同方法实例化的array都是NSArray子类的实例,NSArray是一个抽象的基类。这种模式就是了类簇模式.

    相关文章

      网友评论

          本文标题:isKindOfClass;isSubclassOfClass;

          本文链接:https://www.haomeiwen.com/subject/mhtrlxtx.html