美文网首页
NSObject源码阅读小笔记

NSObject源码阅读小笔记

作者: 我的昵称是小狼 | 来源:发表于2018-05-30 17:51 被阅读0次

    阅读NSObjec期间发现了很多有意思的东西,记录一下

    1.许多方法都系统都实现了它的加号实现和减号实现,不过内部的实现机制有很多是不同的

    2.关于isMemberOfClass和isKindOfClass这个两个方法,看一下源码我们就可以很清晰的分辨它们的区别:

    - (BOOL)isMemberOfClass:(Class)cls {

        return [self class] == cls;

    }

    - (BOOL)isKindOfClass:(Class)cls {

        for (Class tcls = [self class]; tcls; tcls = tcls->superclass) {

            if (tcls == cls) return YES;

        }

        return NO;

    }

    简单明了,isMemberOfClass只会判断当前类是否等于cls,而isKindOfClass会一直去寻找父类

    3.performSelector内部其实是调用了((id(*)(id, SEL))objc_msgSend)((id)self, sel)

    相关文章

      网友评论

          本文标题:NSObject源码阅读小笔记

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