当前位置: 首页 > 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])

类对象的“类”

存储类方法(+ 方法)

 

http://www.dtcms.com/a/177423.html

相关文章:

  • 外包团队协作效率低,如何优化
  • 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年写的一个文档《基于大数据应用的综合健康服务平台研发及应用示范》
  • 【性能工具】一种简易hook bitmap创建的插件使用
  • 单片机-STM32部分:7、GPIO输入 按键
  • 二分查找习题
  • 默认成员函数移动构造和移动赋值运算符重载
  • 数 学 函数
  • 双11美妆数据分析
  • 百胜企业管理咨询:助力企业快速获得ecovadis认证
  • 若依前后端分离项目中可以删除哪些原若依有的?
  • 2398.预算内的最多机器人数目 滑动窗口+单调队列
  • 鸿蒙 使用动画 简单使用