美文网首页
深入探究NSObject对象

深入探究NSObject对象

作者: GDCoder | 来源:发表于2021-03-09 17:33 被阅读0次

    首先如果面试官问你:NSObject对象有哪几种类型?

    实例对象(instance)、类对象(class)、元类对象(meta-class)三种。

    实例对象就不说了,接下来我们探究类对象

    提问:一个NSObject类对象有几个?

    请看下面代码:

    从上面执行的代码可以看出,5个输出的结果一摸一样,实际上

    他们都是一个对象,每个类在内存中有且只有一个class对象。

    提问:一个NSObject元类对象有几个?

    请看下面的代码:

    从上面执行的代码可以看出,5个输出的结果一摸一样,实际上

    他们都是一个对象,每个类在内存中有且只有一个元类对象。

    延展提问:每个对象的内存中会存储对象方法或类方法吗?

    答:不会的,因为只有一份就够了,每个对象都保存一份,明显浪费内存😄!

    提问:class对象在内存中存储的信息主要包括哪些?

    1.isa指针

    2.superclass指针

    3.类的属性信息(@property),类的对象方法(instance method)

    4.类的协议信息(protocol)、类的成员变量信息(iver)

    ...

    提问:meta-class对象在内存中存储的信息主要包括哪些?

    1.isa指针

    2.superclass指针

    3.类的类方法信息

    ...

    其实啊,类对象和元类对象保存的信息的结构都是一样的,只是对于另外一个存储的是空而已,比如对于类对象里面也会存储类方法信息,只是为空,所以大家可以认为,元类对象内存主要存类方法信息,其他是类对象的内存存储的!这也巧妙的看到苹果设计内存的巧妙性,每个类方法和对象方法在其内存上只会保存一次!

    如果觉得我写得还行,请关注我,我会持续更新其他iOS底层方法的知识点😄

    相关文章

      网友评论

          本文标题:深入探究NSObject对象

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