美文网首页iOS逆向
OC底层基础:Runtime

OC底层基础:Runtime

作者: 节奏lhl | 来源:发表于2022-04-15 15:41 被阅读0次

一、Runtime

  • Objective-C是一门动态性比较强的编程语言,跟C、C++等语言有着很大的不同
  • Objective-C的动态性是由Runtime API来支撑的
  • Runtime API提供的接口基本都是C语言的,源码由C\C++\汇编语言编写

二、isa详解

  • 要想学习Runtime,首先要了解它底层的一些常用数据结构,比如isa指针
  • 在arm64架构之前,isa就是一个普通的指针,存储着Class、Meta_Class对象的内存地址
  • 从arm64架构开始,对isa进行了优化,变成了一个共用体(union)结构,还使用位域来存储更多的信息

三、objc_msgSend执行流程

  • OC中的方法调用其实都是转换为objc_msgSend函数调用
  • objc_msgSend的执行流程可以分为3大阶段
    1. 消息发送


      objc_msgSend执行流程-消息发送.png
    2. 动态方法解析


      objc_msgSend执行流程-动态方法解析.png
    3. 消息转发


      objc_msgSend的执行流程-消息转发.png

四、@dynamic

  • 提示编译器不要自动生成setter和getter的实现,不要自动生成成员变量

五、super

  • [super class]
  • [super superclass]

注:面试题

  • 讲一下OC的消息机制
  • 消息转发机制流程
  • 什么是Runtime?平时项目中有用过吗

相关文章

网友评论

    本文标题:OC底层基础:Runtime

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