博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个Objective-C对象如何进行内存布局?(考虑有父类的情况)
阅读量:5278 次
发布时间:2019-06-14

本文共 993 字,大约阅读时间需要 3 分钟。

 

 

1.对象isa指向类对象,类对象的isa指向元类。元类isa指向根元类。根元类的isa指针指向自己,superclass指针指向NSObject类

2.实例对象结构体只有一个isa变量,指向实例对象所属的类。类对象有isa,superclass,方法,属性,协议列表,以及成员变量的描述。

3.所有的对象调用方法都是一样的,没有必要存在对象中,对象可以有无数个,类对象就有一个所以只需存放在类对象中

    

 

可以从官方 源码里面找到实例定义

    /// Represents an instance of a class.

    struct objc_object {

        Class _Nonnull isa  OBJC_ISA_AVAILABILITY;

    };

可以在 里面找到类对象的定义

    

    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

        

    }

 

 

转载于:https://www.cnblogs.com/huangzs/p/7574180.html

你可能感兴趣的文章
iOS 项目的编译速度提高
查看>>
table中checkbox选择多行
查看>>
Magento开发文档(三):Magento控制器
查看>>
性能调优攻略
查看>>
ie6解决png图片透明问题
查看>>
瞬间的永恒
查看>>
2019-8-5 考试总结
查看>>
JS中实现字符串和数组的相互转化
查看>>
web service和ejb的区别
查看>>
Windows Azure Cloud Service (29) 在Windows Azure发送邮件(下)
查看>>
CS61A Efficiency 笔记
查看>>
微信上传素材返回 '{"errcode":41005,"errmsg":"media data missing"}',php5.6返回
查看>>
div或者p标签单行和多行超出显示省略号
查看>>
Elasticsearch 滚动重启 必读
查看>>
Hadoop基本概念
查看>>
java.util.zip压缩打包文件总结一:压缩文件及文件下面的文件夹
查看>>
浅说 apache setenvif_module模块
查看>>
MySQL--数据插入
查看>>
重新学习python系列(二)? WTF?
查看>>
shell脚本统计文件中单词的个数
查看>>