美文网首页
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