美文网首页
iOS中的 isKindOfClass 和 isMemberOf

iOS中的 isKindOfClass 和 isMemberOf

作者: Silence_xl | 来源:发表于2019-08-22 23:57 被阅读0次

    先来看一个烂大街的面试题:

    下面代码结果如何?

    BOOL res1 = [(id)[NSObject class] isKindOfClass:[NSObject class]];
    BOOL res2 = [(id)[NSObject class] isMemberOfClass:[NSObject class]];
    BOOL res3 = [(id)[TestObject class] isKindOfClass:[TestObject class]];
    BOOL res4 = [(id)[TestObject class] isMemberOfClass:[TestObject class]];
    

    答案:除了第一个是YES,其他三个都是NO。

    在推测结果之前,首先要明白两个问题。isKindOfClass 和 isMemberOfClass 的区别是什么?

    isKindOfClass:
    returns YES if the receiver is an instance of the specified class or an instance of any class that inherits from the specified class.
    方法调用者是传入的类的实例对象,或者调用者是传入类的继承者链中的类的实例对象,则返回YES。

    isMemberOfClass:
    returns YES if the receiver is an instance of the specified class.
    方法调用者必须是传入的类的实例对象才返回YES。


    image.png

    相关文章

      网友评论

          本文标题:iOS中的 isKindOfClass 和 isMemberOf

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