文章中使用的源码 objc4-818.2

一、我们如何学习Runtime:

  1. Runtime简介
  2. 关键类型的底层结构
    1. isa:isa_t
    2. class:objc_class
    3. 方法:method_t
    4. 方法缓存:cache_t
  3. 学习他的method结构
  4. 消息机制
    1. 消息发送
    2. 动态方法解析
    3. 消息转发
  5. 常见的API使用

二、什么是Runtime

Runtime又叫运行时,是一套C语言实现的API,是iOS的系统核心之一。在我们开发过程中,可以给任意一个对象发送消息,在编译阶段只是确定了要向接收者发送这条消息,而接受者将要如何响应和处理这条消息,那就要看运行时来决定了。

在编程语言中有静态语言和动态语言,像C++他就是一门静态语言,他的方法调用在编译时已经决定了;二Objective-C是一门动态语言,他的方法调用是在运行时决定的。

isa

isa_t

Class

Method

方法缓存

方法调用

super的本质

isMemberOfClass、isKindOfClass

@dynamic

一个有意思的面试题