美文网首页
isa和superclass的总结

isa和superclass的总结

作者: dandelionYD | 来源:发表于2018-12-28 20:28 被阅读0次

本文所运行的环境是自己编译好的:配置运行objc4-750和使用
本文所写的项目详见:OCBasicDemo

我们从前面的2节,应该大致对isa、superclass应该有了大致的了解了.

下面是我从网络摘的图:


image
  • 分析:
    • 1.instance(实例对象)的isa指向class(类对象)
    • 2.class(类对象)的isa指向meta-claaa(元类对象)
    • 3.meta-class(元类)的isa指向基类的meta-class
    • 4.class(类对象)的superclass指向父类的class(类对象)
      • 如果没有父类superclass指向nil
    • 5.meta-class(元类)的superclass指向的是父类的meta-class
    • 6.基类的meta-class的superclass指向基类的class
    • 7.instance(实例对象)调用对象的方法:isa找class(类对象),不存在,则通过superclass去找
    • 8.class(类对象)调用类方法:isa找meta-class(元类),不存在,则通过superclass去找

示例:

#import <Foundation/Foundation.h>
@interface NSObject()
+ (void)test;
@end

@implementation NSObject (Test)
- (void)test
{
   NSLog(@"test被调用啦%p", self);
}
@end


@interface Person : NSObject
+ (void)test;
@end

@implementation Person
@end


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSLog(@"%p", [NSObject class]);//0x100b14140
        NSLog(@"%p", [Person class]);  //0x1000011c0
      
        [NSObject test];//test被调用啦0x100b14140
        [Person test];//test被调用啦0x1000011c0
    }
    return 0;
}

分析:

  • 1.调用:[NSObject test];我们定义了+ test方法,但是在实现里面没有实现该方法,所以就相当于在元类里面没有找到,此时就会通过superclass指针来找,就去NSObject的class类里面找了,发现里面实现了test方法,执行(-test)
  • 2.对于[Person test];也是类似哟

友情链接:

相关文章

  • 笔记 - isa和superclass

    isa的调用 class的superclass meta-class的superclass 总结1 总结2 isa...

  • OC基础-isa(4)

    isa,superClass总结先上图 总结:a.instance的isa指向classb.class的isa指向...

  • isa和superclass的总结

    本文所运行的环境是自己编译好的:配置运行objc4-750和使用本文所写的项目详见:OCBasicDemo 我们从...

  • iOS-浅谈OC中isa和superclass的指针指向

    目录 isa指针----isa指针指向superclass指针----class对象的superclass指针--...

  • iOS:isa与superclass

    目录一,对象的三种类型二,对象的存储信息三,isa指针四,superclass指针五,isa和superclass...

  • isa和superclass

    isa指针 将Objective-c代码转换成 C\C++的代码 找到[person personInstance...

  • isa和SuperClass

    开局一张图 刚开始看这图时,我也是懵的 其实也很好理解,这得分开看 虚线 实线 根类、基类 一般都是指:NSObj...

  • isa和superClass

    isa 对象的isa指针是指向哪里的? instance的 isa 指向 class当调用对象方法时,通过inst...

  • isa和superclass

    D、题:对象的isa指针指向哪里? 拓展: class对象的superclass指针指向哪里? meta-clas...

  • isa 和 superclass

    OC对象的分类OC中的对象,简单来说可以分为三大类:instance 对象(实例对象)、class 对象(类对象)...

网友评论

      本文标题:isa和superclass的总结

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