能力缺口与基础门槛
很多写了好几年业务代码的 iOS 开发者,其实一直停留在调用系统 API、堆砌 UI 控件、写网络请求的阶段。一旦遇到崩溃栈只打印了一堆汇编、页面卡顿无法定位、或者需要做组件化解耦却不知从何下手时,就会暴露出对底层机制一无所知的短板。这门课就是用来补这个窟窿的。它不教你如何画界面,而是直接带你扒开底层的运行机制。学习这门内容需要一定门槛,你至少得熟练掌握一门面向对象语言,能独立写出完整的页面逻辑,并且了解基本的内存管理规则。如果你连继承关系和引用计数都说不清,建议先去补基础语法,别硬啃底层源码。你需要放下那种“我会写界面就能应付面试”的心态,老老实实把底层逻辑补齐。
学习顺序与资料练习配合
这门课的主题高度聚焦在运行时机制和事件循环模型上,千万不要跳着看。建议先从运行时机制这一大块入手,重点跟着视频去剖析对象与类在内存中的本质结构。不要光听,一定要结合配套资料,自己下载一份可调试的开源底层源码工程,跟着视频去单步调试。去看看消息发送的汇编入口到底是怎么跳转的,去验证动态方法解析和消息转发的完整流程。事件循环那一块,同样需要你建一个带有定时器或输入源的测试工程,去观察状态的切换。配套的练习必须动手敲,把方法交换、动态添加方法这些代码自己跑一遍,别指望看几眼视频就能记住。遇到卡壳的地方,就倒回去重新看源码分析的片段,缺什么补什么,别假装看懂了。
学完应能回答的问题与产出
- 当一个对象调用一个根本不存在的方法时,底层在消息发送、动态解析到转发这三个阶段分别做了什么?你能画出完整的流转图吗?
- 对象的指针在内存里到底指向谁?类对象和元类对象的区别是什么?为什么要有这种设计?
- 事件循环机制是如何保证主线程在休眠与唤醒之间切换的?一个耗时任务如果不加干预会怎样阻塞这个循环?
学完之后,你应该能独立产出几个具体的防崩溃拦截方案,比如利用转发机制拦截未找到的方法。此外,你还要能通过底层机制去解释日常开发中的各种黑魔法,而不是只会背面试题。把底层的链路自己跑通,写出实际的拦截组件,才算真正补到了你的能力栈里。
课程目录
1-1 [Runtime] 课程简介&注意事项 (03:07) 1-2 [Runtime] Runtime初探 (08:37) 1-3 [Runtime] 对象与方法的本质 (13:02) 1-4 [Runtime] 类方法与实理方法 (08:14) 1-5 [Runtime] runtime源码分析-汇编 (36:36) 1-6 [Runtime] runtime源码分析-C递归 (13:57) 1-7 [Runtime] runtime源码分析-动态方法解析 (20:23) 1-8 [Runtime] runtime源码分析-消息转发 (18:05) 1-9 [Runtime] runtime应用 (08:09) 1-10 [Runtime] runtime总结 (06:49) 2-1 [Runloop] 架构模式课程介绍 (15:38) 2-2 [Runloop] OSI七层数据分布 (08:48) 2-3 [Runloop] Runloop课程简介 (08:16) 2-4 [Runloop] MVC解耦 (06:00) 2-5 [Runloop] runloop是什么 (11:19) 2-6 [Runloop] runloop的作用 (11:51) 2-7 [Runloop] 面向协议编程 (24:40) 2-8 [Runloop] runloop和线程的关系 (13:58) 2-9 [Runloop] runloop源码分析-runloop对象和mode (10:42) 2-10 [Runloop] MVVM正向绑定 (16:54) 2-11 [Runloop] runloop源码分析-CFRunLoopSourceRef (24:36) 2-12 [Runloop] source1-port线程之间通讯 (27:11) 2-13 [Runloop] MVVM响应反向绑定 (12:59) 2-14 [Runloop] source1-port总结 (05:03) 2-15 [Runloop] 课程总结 (06:27) 2-16 [Runloop] RAC初探 (07:16) 2-17 [Runloop] 网络数据流优化 (10:30) 3-1 [Runtime与Runloop底层原理] 课程复习&课程简介 (07:08) 3-2 [Runtime与Runloop底层原理] 实例方法动态解析 (51:08) 3-3 [Runtime与Runloop底层原理] 类方法查找流程 (20:44) 3-4 [Runtime与Runloop底层原理] 类方法动态方法解析 (25:13) 3-5 [Runtime与Runloop底层原理] 反汇编分析消息转发 (30:35) 3-6 [Runtime与Runloop底层原理] Runloop底层原理 (14:42)





