zoukankan      html  css  js  c++  java
  • iOS 探究对象的本质

    OC中的类在编译完成之后是结构体,分别包含了那些数据?

    struct objc_class {
        Class _Nonnull isa  OBJC_ISA_AVAILABILITY; // 指向元对象的指针
        #if !__OBJC2__
        Class _Nullable super_class  OBJC2_UNAVAILABLE; // 父对象
        const char * _Nonnull name OBJC2_UNAVAILABLE; // 类名
        long version OBJC2_UNAVAILABLE; // 版本
        long info  OBJC2_UNAVAILABLE; // 其他信息
        long instance_size OBJC2_UNAVAILABLE; // 实例大小
        struct objc_ivar_list * _Nullable ivars  OBJC2_UNAVAILABLE; // 属性列表
        struct objc_method_list * _Nullable * _Nullable methodLists OBJC2_UNAVAILABLE; //  方法列表                  
        struct objc_cache * _Nonnull cache OBJC2_UNAVAILABLE; // 方法缓存地址
        struct objc_protocol_list * _Nullable protocols  OBJC2_UNAVAILABLE; // 协议列表
        #endif
    } OBJC2_UNAVAILABLE;

    一个对象的isa指针指向的是它的类对象。

    类对象分别包含了:指向元对象的指针、父对象、类名、版本、其他信息、实例大小、属性列表、方法列表、方法缓存地址、协议列表

  • 相关阅读:
    Java验证码
    Java内存泄漏问题
    Java常见异常总结
    Java编码与乱码问题
    Spring:源码解读Spring IOC原理
    Quartz 定时邮件发送多个备份文件
    spring-boot 多线程
    java并发基础
    Java多线程中wait语句的具体使用技巧
    多线程的死锁
  • 原文地址:https://www.cnblogs.com/shen5214444887/p/12345652.html
Copyright © 2011-2022 走看看