美文网首页
OC中的对象

OC中的对象

作者: it小小菜鸟 | 来源:发表于2020-07-09 15:59 被阅读0次

CO中的对象有3种

instance对象(实例对象)

  • instance对象就是通过alloc创建的对象

  • instance对象在内存中存储的信息包括:

    • isa指针
    • 其他成员变量值

class对象(类对象)

  • 下面的objClass 就是类对象,一个类只有一个类对象,通过4种方法获取的类对象都是同一个对象。
#import <objc/runtime.h>
1、通过类方法
Class objClass = [NSObject class];
2、通过对象获取
NSObject *obj = [[NSObject alloc] init];
Class objClass = [obj class];
3、通过runtime的object_getClass获取
Class objClass = object_getClass(obj)
4、通过runtime的objc_getClass获取
Class objClass = objc_getClass("NSObject");
  • class对象在内存中存储的信息主要有:
    • isa指针
    • superclass指针
    • 类的属性信息(@property)
    • 类的对象方法信息(instance method)
    • 类的协议信息(@protocol)
    • 类的成员变量信息(ivar)
    • 其他

meta-class对象(元类对象)

  • 也是一个类对象,每个类也只有一个元类对象(meta-class)。
1、通过runtime 的 object_getClass 方法获取,传入相应的类的class对象(类对象)
Class objMetaClass = object_getClass([NSObject class])
2、通过runtime 的 objc_getMetaClass 方法获取
Class objMetaClass = objc_getMetaClass("NSObject");
3、 可以通过下面方法判断一个对象是否是元类对象
Bool isMetaClass = class_isMetaClass(objMetaClass)
  • meta-class对象和class对象的内存结构是一样的,class对象中的对象方法、成员变量等信息在meta-class对象中为null,但用途不一样
  • meta-class对象在内存中存储的信息主要有:
    • isa指针
    • superclass指针
    • 类的类方法信息(class method)
    • 其他

相关文章

  • OC 与 Swift

    OC对象的本质(上):OC对象的底层实现原理OC对象的本质(中):OC对象的种类OC对象的本质(下):详解isa&...

  • OC对象的本质(中)—— OC对象的种类

    OC对象的本质(上):OC对象的底层实现原理OC对象的本质(中):OC对象的种类OC对象的本质(下):详解isa&...

  • OC对象的本质(下)—— 详解isa&supercl

    OC对象的本质(上):OC对象的底层实现原理OC对象的本质(中):OC对象的种类OC对象的本质(下):详解isa&...

  • OC对象类型浅析

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

  • Objective-C对象的分类与isa指针

    OC对象的分类 Objective-C中的对象,简称OC对象,主要可以分为3种 instance对象(实例对象) ...

  • iOS 内存管理

    1、只有OC对象才需要进行内存管理 1、OC对象存在堆中 2、非OC对象存在栈中(内存会被系统自动收回) ...

  • objc_msgSend

    OC中消息的概念 OC中在对象上调用方法,用OC的术语叫“传递消息”。在OC中,如果向某对象传递消息,会使用动态绑...

  • OC对象的分类

    OC中的对象,简称OC对象,主要可以分为3种: instance对象(实例对象) instance对象就是通过类a...

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

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

  • isa 和 superclass

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

网友评论

      本文标题:OC中的对象

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