当前位置: 首页 > news >正文

OC的实例对象,类对象,元类对象

OC的实例对象,类对象,元类对象 

在 Objective-C 中,一切都是对象 —— 包括“类”本身。它背后的运行机制依赖于一个强大的元类(metaclass)系统

  • 实例对象

  • 类对象

  • 元类对象

是 Objective-C Runtime 的三种核心对象,它们构成了类与对象的运行时结构。

一、实例对象

 通过 [[类名 alloc] init] 或类似方式创建的具体对象,就是实例对象

Person *p = [[Person alloc] init];

此时p就是一个实例对象,拥有person类定义的所有实例变量、属性、方法等。

二、类对象

每个类在运行时只有一个类对象,它描述了这个类的结构和行为,是“类的实例”

Class cls = [Person class];//或者object_getClass(p); //获取对象p所属的类

作用:

储存类方法(+方法)

存储类名、父类、方法列表、属性列表等

所有实例对象共享这个类对象

三、元类对象

类对象本身也是一个对象,它是“某个元类的实例”

元类描述的类对象的行为,即:类方法(+方法)实际上存储在元类对象中

Class metaClass = object_getClass([Person class]);

类型

举例

本质

方法存储位置

实例对象

Person *p = [[Person alloc] init]

类的一个具体对象

实例方法(- 方法)

类对象

[Person class]

Person 类的唯一对象

类方法在元类中

元类对象

object_getClass([Person class])

类对象的“类”

存储类方法(+ 方法)

 

相关文章:

  • 外包团队协作效率低,如何优化
  • python打卡day18
  • 【一篇详解】深入浅出RabbtiMQ消息队列
  • openstack的网络
  • 第十六次博客打卡
  • Qt开发经验 --- 避坑指南(6)
  • Java中字符转数字的原理解析 - 为什么char x - ‘0‘能得到对应数字
  • C++回顾 Day4
  • Web前端入门及基础代码
  • 创建虚拟服务时实现持久连接。
  • hadoop中的序列化和反序列化(1)
  • 猫咪如厕检测与分类识别系统系列~进阶【一】视频流推流及网页实时展示
  • 如何测试 esp-webrtc-solution_solutions_doorbell_demo 例程?
  • 【Python】通过`Editable Install`模式详解,解决Python开发总是import出错的问题
  • 电商双11美妆数据分析(二)
  • Python案例实战《水果识别模型训练及调用》
  • 写个远程操作Android的调试程序
  • OpenMVS 的编译与运行
  • 电子电器架构 --- 48V架构的一丢丢事情
  • 2014年写的一个文档《基于大数据应用的综合健康服务平台研发及应用示范》
  • 云南公司建网站多少钱/简述网站建设流程
  • 开奖网站开发/河北网站推广公司
  • 百度网站建设技术/电商网站规划
  • 哪里可以免费建网站/近三天重大新闻摘抄
  • 矢量网站动画怎么做/互联网广告营销
  • 办公室装修设计网站/爱站网ip反查域名