美文网首页
OC中类和对象的实质

OC中类和对象的实质

作者: AlwaysBlue | 来源:发表于2021-12-16 18:07 被阅读0次

objc_object源码

objc_class源码
继承objc_object,说明Class本身也是一种对象。objc_class中的isa指向的则是Class对象的Class,也就是Meta_class.

1)metaClass是能找得到类方法的metaClass是找不到对象方法的;在前面提到methodLists里面,如果是父类的类方法,就会通过metaClass的superClass去找到父metaClass,再从中找相应的类方法;

2)Class是可以找到对象方法的,Class是找不到类方法的。在前面提到methodLists里面,如果是父类的对象方法,就会通过Class的superClass去到找到父类的Class,再从中找到相应的对象方法;

其实,这正是体现了面向对象三大特性之一:继承性。https://blog.csdn.net/u014686721/java/article/details/82189342
https://juejin.im/post/5ac81c75518825556534c0af
1.一个NSObject对象占用多少内存?
只有一个isa指针,在64位的cpu中占8个字节,在32位中,指针占4个字节。

2. 一个OC对象在内存中是如何布局的。 
isa指针这个变量的地址就是结构体的地址。也就是NSObject对象的地址。
自定义类的内部实现:如果一个自定义类继承自NSObject。

3.在64位环境下,多层继承关系
这道面试题的实质是想问一个Person对象,一个Student对象分别占用多少内存空间?主要考察内存对齐的问题。

还不是整体补齐。还需要是

4.OC的类信息存放在哪里。 面试题:对象的isa指针指向哪里。
实例对象:指向的是类结构体存放的地方。找实例方法,实例变量(但是每个实例的地址不一样,isa就是这个实例的地址,类结构存放地址只有一份,如果解释实例不同呢?)每一个类在内存中有且只有一个class对象,也就是说无论多少个实例对象其类对象的内存地址都是一样的,但是每个实例对象的地址肯定不一样啦。实例对象的isa指针 经过&运算之后得到的是类对象地址。
类对象:指向是metaClass。找类方法,类属性
meta对象:指向基类的isa,基类的isa指向自己。

有两条路径可以查找

相关文章

  • OC中类和对象的实质

    objc_object源码[https://opensource.apple.com//source/objc4/...

  • OC 中类的实质

    id id 可以表示任何 OC 中的对象,在 runtime 中对 id 是这么定义的 所以 id 其实是一个指向...

  • 02-OC中对象的isa指针和superclass指针

    OC中的isa指针和superclass指针 OC中的对象分为哪一类 instance对象(实例对象) class...

  • OC对象类型浅析

    OC中对象类型的分类 OC中对象类型可以分为如下三类: instance 实例对象 class 类对象 meta-...

  • isa 和 superclass

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

  • OC中的类和对象

    OOP (Objec? O?ien?ed P?og?amming )面向对象编程 。面向对象以事物为中心,完成某件...

  • OC 中的类和对象

    id和Class的定义 runtime里面,声明了id和Class的类型,简化一下如下: struct objc_...

  • Runtime之理解OC中类与对象的实质

    在阅读Objective-C高级编程中block章节时,在第2章里讲到block的实质,作者写道,要理解block...

  • iOS-对象、isa指针、SuperClass

    OC中对象分类 分为三类:实例对象、类对象、元类对象 instance对象(实例对象) class对象(类对象) ...

  • OC底层-类和对象

    类和对象 OC中的类 OC中.类基于C/C++的结构体. 通过查看NSObject的类定义,可以看到内部有一个Cl...

网友评论

      本文标题:OC中类和对象的实质

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