# 拆解 iOS 运行时与内存机制:一门面向工程实战的底层原理课
很多 iOS 开发者在业务开发中陷入“只会调 API,不懂底层机制”的困境。当遇到崩溃日志无法分析、内存泄漏难以定位、启动速度优化缺乏抓手时,往往只能依赖黑盒式的经验猜测。这门《iOS底层班》课程正是为解决这一痛点而设计,它不教具体的 UI 控件搭建,也不罗列 Swift 或 Objective-C 的语法糖,而是聚焦于 iOS 系统的核心运行机制。通过深入剖析 Runtime 动态特性、内存管理模型、GCD 线程调度以及启动流程优化,帮助工程师建立从代码调用到系统响应的完整链路认知。学完这套课程,你不再只是调用系统提供的接口,而是能理解接口背后的行为逻辑,从而在面对复杂技术问题时具备独立的排查和解决能力。
**适合人群与前置基础**
这门课程并非零基础入门指南,它更适合已经具备至少一年 iOS 开发经验,熟悉 Objective-C 或 Swift 基本语法,并有过实际项目落地经验的工程师。如果你刚接触移动开发,连基本的 MVC 架构或生命周期都不清楚,直接啃底层原理会非常痛苦且效率低下。对于转行者或初级开发,建议先巩固语言基础和常规业务开发逻辑,将这门课作为进阶提升的跳板。课程周末班的设计也暗示了其内容密度较高,适合在职人员利用碎片时间系统补课,而非碎片化地刷视频。
**核心模块与学习建议**
资料包含“上”、“下”及“周末班”三个部分,建议不要平均用力,而是根据当前工作痛点进行针对性突破。首先,务必优先研习“上”卷中的 Runtime 机制与内存管理章节。这是 iOS 底层的地基,理解 ARC 自动引用计数的释放原理、循环引用的成因以及 Instruments 内存分析工具的使用,是解决大多数线上内存泄漏问题的关键。其次,重点攻克“下”卷中关于 GCD 线程模型和启动优化的内容。理解线程切换成本、队列优先级策略以及 App 启动各阶段的耗时分布,能直接提升你对性能调优的判断力。最后,“周末班”部分往往包含综合案例分析或高频面试题的深度解析,适合作为阶段性的复盘与检验。建议在学习每个模块时,不要只停留在听讲层面,必须结合代码进行实操验证。
**独立能力与练习方法**
学完课程后,你应当具备独立诊断复杂技术问题的能力。例如,当 App 出现卡顿或崩溃时,你能通过调用栈分析快速定位是主线程阻塞、死锁还是野指针访问;当需要优化启动速度时,你能准确识别出哪个耗时操作可以异步化或延迟加载。资料包中的配套内容应作为“问题库”而非“教程”使用。建议建立自己的实验工程,模拟课程中提到的各种边界场景,比如故意制造循环引用或线程竞争,观察 Xcode 中的内存图和线程表现。将课程中的理论模型与你在实际项目中遇到的真实 Crash 日志对应起来,反复练习“假设-验证-修复”的分析流程。这种刻意练习能将书本知识转化为直觉般的工程判断力,让你在面对未知底层问题时,拥有清晰的排查路径和解决手段,从而在团队中承担更核心的架构与安全职责。
课程目录
1.底层上-逆向/ day01/ 01-课程简介 www.】.mp4 02-学习条件 www.】.mp4 03-越狱的优点和缺点 www.】.mp4 04-完美越狱和非完美越狱 www.】.mp4 05-Cydia www.】.mp4 06-必备软件安装 www.】.mp4 07-代码判断设备是否越狱 www.】.mp4 08-提高工作效率的工具 www.】.mp4 09-SSH01-简介 www.】.mp4 10-SSH02-Mac远端登录到IP www.】.mp4 11-SSH03-root、mobile www.】.mp4 12-SSL和SSH www.】.mp4 day02/ 13-SSH05-安全连接 www.】.mp4 14-SSH06-服务器公钥的保存和变更 www.】.mp4 15-SSH07-客户端认证 www.】.mp4 16-SSH08远程拷贝-文件权限 www.】.mp4 17-SSH09-22端口 www.】.mp4 18-SSH10-USB连接 www.】.mp4 19-SSH11-usbmuxd01-使用 www.】.mp4 20-SSH12-usbmuxd01-总结 www.】.mp4 21-SSH13-sh脚本 www.】.mp4 22-SSH14-iPhone终端中文输入 www.】.mp4 23-Cycipt01-基本使用 www.】.mp4 24-Cycipt02-常用语法 www.】.mp4 25-Cycipt03-定位登录方法 www.】.mp4 26-Cycipt04-定位文本输入框 www.】.mp4 27-Cycipt05-小结 www.】.mp4 day03/ 24-Cycipt02-常用语法 www.】.mp4 25-Cycipt03-定位登录方法 www.】.mp4 28-Cycript06-封装cy文件 www.】.mp4 29-Cycript07-exports www.】.mp4 30-Cycipt08-全局函数 www.】.mp4 31-Cycipt09-mjcript www.】.mp4 32-Cycipt10-微信练习 www.】.mp4 33-Reveal www.】.mp4 34-ipa的安装 www.】.mp4 35-逆向APP的思路 www.】.mp4 36-class-dump01-基本使用 www.】.mp4 37-class-dump02-细节 www.】.mp4 38-代码的编译过程 www.】.mp4 39-Hopper01-简单使用 www.】.mp4 40-Hopper02-UIKit伪代码分析 www.】.mp4 day04/ 41-遗留问题解决 www.】.mp4 42-dsc01-简介 www.】.mp4 43-dsc02-优点 www.】.mp4 44-dsc03-dyld www.】.mp4 45-dsc04-dsc_extractor www.】.mp4 46-Mach-object01-文件类型 www.】.mp4 47-Mach%20object02-文件类型02 www.】.mp4 48-Mach%20object03-Universal%20Binary www.】.mp4 49-Mach%20object04-基本结构01 www.】.mp4 50-Mach-o-object05-基本结构02 www.】.mp4 51-Mach%20object06-基本结构03 www.】.mp4 52-Mach%20object07-基本结构04 www.】.mp4 53-Mach%20object08-dyld www.】.mp4 54-答疑交流 www.】.mp4 day05/ 55-初识加壳 www.】.mp4 56-加壳原理 www.】.mp4 57-脱壳原理 www.】.mp4 58-LC_ENCYPTION_INFO www.】.mp4 59-脱壳工具01-Clutch www.】.mp4 60-脱壳工具02-dumpdecrypted www.】.mp4 61-喜马拉雅FM逆向实战01-明确需求 www.】.mp4 62-喜马拉雅FM逆向实战02-安装theos www.】.mp4 63-喜马拉雅FM逆向实战03-配置PATH www.】.mp4 64-喜马拉雅FM逆向实战04-source命令 www.】.mp4 65-喜马拉雅FM逆向实战05-编写tweak代码 www.】.mp4 66-喜马拉雅FM逆向实战06-总结步骤 www.】.mp4 67-课程安排说明 www.】.mp4 代码 www.】.zip day06/ -06-代码 www.】.zip 68-Tweak练习01-SpringBoard01-分析 www.】.mp4 69-Tweak练习01-SpringBoard02-编码 www.】.mp4 70-Tweak练习02-微信01-分析 www.】.mp4 71-Tweak练习02-微信02-数量 www.】.mp4 72-Tweak练习02-微信03-返回cell www.】.mp4 73-Tweak练习02-微信04-界面调整和退出 www.】.mp4 74-Tweak练习02-微信05-数据存储 www.】.mp4 75-Tweak练习02-微信06-加载图片资源 www.】.mp4 76-Tweak练习02-微信07-宏定义资源路径 www.】.mp4 77-Tweak原理01-安装过程 www.】.mp4 78-Tweak原理02-运行过程 www.】.mp4 79-Tweak原理03-常见疑惑 www.】.mp4 day07/ -07-代码 www.】.zip 80-Tweak原理04-复习总结 www.】.mp4 81-Tweak原理05-从汇编角度分析 www.】.mp4 82-Tweak细节01-图片资源 www.】.mp4 83-Tweak细节02-多文件开发01 www.】.mp4 84-Tweak细节03-多文件开发02 www.】.mp4 85-Tweak细节04-release版本 www.】.mp4 86-Tweak练习03-内涵段子01-获取appid www.】.mp4 87-Tweak练习03-内涵段子02-去除首页广告 www.】.mp4 88-Tweak练习03-内涵段子03-去除评论广告 www.】.mp4 89-Tweak练习03-内涵段子04-其他思路 www.】.mp4 90-Tweak练习03-内涵段子05-去除new标签和刷新按钮 www.】.mp4 91-Logos语法01-%25ctor、%25dtor www.】.mp4 day08/ 092-make%20package补充 www.】.mp4 093-%25new补充 www.】.mp4 094-腾讯视频01-MJAppTools www.】.mp4 095-腾讯视频02-去除启动页面广告 www.】.mp4 096-腾讯视频03-去除视频广告 www.】.mp4 097-命令行工具01-main函数处理 www.】.mp4 098-命令行工具02-功能分析 www.】.mp4 099-命令行工具03-读取magic www.】.mp4 100-命令行工具04-参数 www.】.mp4 101-命令行工具05-权限 www.】.mp4 102-命令行工具06-MJAppTools分析 www.】.mp4 103-课程说明 www.】.mp4 day09/ 104-logify01-复习 www.】.mp4 105-logify02-%log www.】.mp4 106-logify03-代码转换 www.】.mp4 107-logify04-查看打印信息 www.】.mp4 108-logify05-补充 www.】.mp4 109-动态调试01-Xcode动态调试的原理 www.】.mp4 110-动态调试02-动态调试任意APP的原理 www.】.mp4 111-动态调试03-debugserver环境搭建 www.】.mp4 112-动态调试04-lldb连接debugserver www.】.mp4 113-答疑交流 www.】.mp4 day10/ 114-LLDB01-简介 www.】.mp4 115-LLDB02-命令格式、help www.】.mp4 116-LLDB03-expression www.】.mp4 117-LLDB04-thread www.】.mp4 118-LLDB05-流程控制 www.】.mp4 119-LLDB06-指令级别的命令 www.】.mp4 120-LLDB07-代码断点 www.】.mp4 121-LLDB08-断点命令 www.】.mp4 122-LLDB09-内存断点 www.】.mp4 123-LLDB10-模块查找 www.】.mp4 day11/ 124-ASLR01-代码断点的注意点 www.】.mp4 125-ASLR02-MachO的虚拟内存分段 www.】.mp4 126-ASLR03-FileOffset、FileSize www.】.mp4 127-ASLR04-小结、讨论 www.】.mp4 128-ASLR05-ASLR简介 www.】.mp4 129-ASLR06-获得函数的真实内存地址 www.】.mp4 130-ASLR07-函数在MachO文件中的位置 www.】.mp4 131-ASLR08-总结 www.】.mp4 132-ASLR09-全局变量在MachO文件中的位置 www.】.mp4 133-ASLR10-答疑 www.】.mp4 day12/ -12-ARMTest www.】.zip 134-ARM64汇编01 www.】.mp4 135-ARM64汇编02-通用寄存器 www.】.mp4 136-ARM64汇编03-mov指令 www.】.mp4 137-ARM64汇编04-add、sub指令 www.】.mp4 138-ARM64汇编05-答疑 www.】.mp4 139-ARM64汇编06-cmp指令、cpsr寄存器 www.】.mp4 140-ARM64汇编07-b指令 www.】.mp4 141-ARM64汇编08-带条件的b指令.MP4 www.】.mp4 142-ARM64汇编09-带if-else反汇编 www.】.mp4 143-ARM64汇编10-bl指令 www.】.mp4 144-ARM64汇编11-答疑 www.】.mp4 day13/ -13-ARMTest www.】.zip -13-堆栈平衡 www.】.xlsx 145-ARM64汇编12-ldr指令 www.】.mp4 146-ARM64汇编13-ldur指令 www.】.mp4 147-ARM64汇编14-ldp指令 www.】.mp4 148-ARM64汇编15-str、stur、stp指令 www.】.mp4 149-ARM64汇编16-wzr、xzr寄存器 www.】.mp4 150-ARM64汇编17-pc、lr寄存器 www.】.mp4 151-ARM64汇编18-bl指令的本质 www.】.mp4 152-ARM64汇编19-函数的分类 www.】.mp4 153-ARM64汇编20-叶子函数 www.】.mp4 154-ARM64汇编21-非叶子函数01-开辟栈空间 www.】.mp4 155-ARM64汇编22-非叶子函数02-恢复堆栈平衡 www.】.mp4 156-ARM64汇编23-答疑 www.】.mp4 day14/ -14-代码 www.】.zip 157-ARM64汇编24-OC方法内存断点 www.】.mp4 158-ARM64汇编25-调试OC方法 www.】.mp4 159-ARM64汇编26-用debugserver启动APP www.】.mp4 160-ARM64汇编27-破解命令行程序 www.】.mp4 161-ARM64汇编28-破解iOS程序 www.】.mp4 162-iOS签名机制01-了解签名 www.】.mp4 163-iOS签名机制02-加密解密简介 www.】.mp4 164-iOS签名机制03-对称密码 www.】.mp4 165-iOS签名机制04-密钥配送问题 www.】.mp4 166-iOS签名机制05-公钥密码 www.】.mp4 167-iOS签名机制06-混合密码系统 www.】.mp4 168-iOS签名机制07-总结 www.】.mp4 day15/ -15-笔记 www.】.pdf 169-iOS签名机制08-单向散列函数01-基本概念 www.】.mp4 170-iOS签名机制09-单向散列函数02-使用场景 www.】.mp4 171-iOS签名机制10-数字签名01-基本概念 www.】.mp4 172-iOS签名机制11-数字签名02-使用流程 www.】.mp4 173-iOS签名机制12-数字签名03-存在的问题 www.】.mp4 174-iOS签名机制13-证书 www.】.mp4 175-iOS签名机制14-总结 www.】.mp4 176-iOS签名机制15-iOS签名机制01-具体流程 www.】.mp4 177-iOS签名机制16-iOS签名机制02-解释流程 www.】.mp4 178-iOS签名机制17-iOS签名机制03-具体步骤 www.】.mp4 179-iOS签名机制18-iOS签名机制04-总结 www.】.mp4 180-iOS签名机制19-iOS签名机制05-答疑 www.】.mp4 day16/ -16-资料/ 1601-Category的本质01-基本使用 www.】.mp4 1602-Category的本质02-分类的底层结构 www.】.mp4 1603-Category的本质03-加载分类方法 www.】.mp4 1604-Category的本质04-处理分类方法01 www.】.mp4 1605-Category的本质05-处理分类方法02 www.】.mp4 1606-Category的本质06-load www.】.mp4 1607-Category的本质07-initialize www.】.mp4 1608-Category的本质08-load和initialize的调用区别 www.】.mp4 1609-Category的本质09-答疑 www.】.mp4 1610-内存分配对齐01-现象观察 www.】.mp4 1611-内存分配对齐02-源码分析 www.】.mp4 1612-课程安排 www.】.mp4 day17/ 180-iOS签名机制20-重签名01-情景分析 www.】.mp4 181-iOS签名机制21-重签名02-基本操作 www.】.mp4 182-iOS签名机制22-重签名03-GUI工具 www.】.mp4 183-iOS签名机制23-重签名04-tweak原理分析 www.】.mp4 184-iOS签名机制24-重签名05-动态库 www.】.mp4 185-iOS签名机制25-重签名06-其他APP www.】.mp4 186-iOS签名机制26-重签名07-Bug修复 www.】.mp4 day18/ -18-课件 www.】.zip 1801-LLVM-01 www.】.mp4 1801-LLVM-02 www.】.mp4 1802-LLVM-03 www.】.mp4 1802-LLVM-04 www.】.mp4 1803-代码混淆01-简介 www.】.mp4 1804-代码混淆02-实践 www.】.mp4 1805-代码混淆03-ios-class-guard www.】.mp4 1806-代码混淆04-字符串加密 www.】.mp4 1807-结束语 www.】.mp4 课件/ 工具/ 04-Reveal www.】.pptx 07-theos www.】.pdf 07-theos www.】.pptx 08-动态调试 www.】.pptx 09-ARM64汇编 www.】.zip 10-iOS签名机制 www.】.pptx 2.底层下-原理/ MJ-Runloop补充/ MJ-Runloop补充/ RL01-初识RunLoop www.】.mp4 RL02-RunLoop对象 www.】.mp4 RL03-RunLoop的Mode www.】.mp4 RL04-RunLoop的运行逻辑01-内部结构 www.】.mp4 RL05-RunLoop的运行逻辑02-源码分析01 www.】.mp4 RL06-RunLoop的运行逻辑03-源码分析02 www.】.mp4 RL07-RunLoop的运行逻辑04-流程图 www.】.mp4 RL08-RunLoop的运行逻辑05-GCD www.】.mp4 RL09-RunLoop的运行逻辑06-总结 www.】.mp4 MJ-语法补充/ yf01-OC对象的本质01-概述 www.】.mp4 yf02-OC对象的本质02-NSObject www.】.mp4 yf03-OC对象的本质03-自定义类 www.】.mp4 yf04-OC对象的本质04-窥探内存结构 www.】.mp4 yf05-OC对象的本质05-更复杂的继承关系 www.】.mp4 yf06-OC对象的本质06-内存具体分析 www.】.mp4 yf07-OC对象的分类01-提问 www.】.mp4 yf08-OC对象的分类02-instance www.】.mp4 yf09-OC对象的分类03-class www.】.mp4 yf10-OC对象的分类04-meta-class www.】.mp4 yf11-isa和superclass01-调用对象方法和类方法的过程 www.】.mp4 yf12-isa和superclass02-class的superclass www.】.mp4 yf13-isa和superclass03-metaclass的superclass www.】.mp4 yf14-isa和superclass04-总结 www.】.mp4 yf15-Class的本质01-判断类对象的类型 www.】.mp4 yf16-Class的本质02-isa的细节 www.】.mp4 yf17-Class的本质03-结构分析 www.】.mp4 yf18-Class的本质04-instanceSize www.】.mp4 yf19-Class的本质05-class_rw_t、class_ro_t www.】.mp4 yf20-Class的本质06-证明isa和superclass的作用 www.】.mp4 yf21-KVO01-基本使用 www.】.mp4 yf22-KVO02-存在的疑问 www.】.mp4 yf23-KVO03-底层实现分析 www.】.mp4 yf24-KVO04-验证isa和IMP www.】.mp4 yf25-KVO05-Foundation中的私有函数 www.】.mp4 yf26-KVO06-窥探类对象内存中的函数 www.】.mp4 yf27-KVO07-总结 www.】.mp4 yf28-KVO08-补充 www.】.mp4 yf29-OC对象的本质07-面试题补充 www.】.mp4 yf30-isa和superclass05-补充 www.】.mp4 day01/ -201-代码 www.】.zip 001-OC对象的本质01-OC和C_C++ www.】.mp4 002-OC对象的本质02-将OC转换为C_C++ www.】.mp4 003-OC对象的本质03-NSObject的内存本质 www.】.mp4 004-OC对象的本质04-class_getInstanceSize、malloc_size www.】.mp4 005-OC对象的本质05-回答面试题 www.】.mp4 006-OC对象的本质06-窥探NSObject的内存 www.】.mp4 007-OC对象的本质07-Student的本质 www.】.mp4 008-OC对象的本质08-Student的内存布局 www.】.mp4 009-OC对象的本质09-更复杂的继承结构 www.】.mp4 010-OC对象的本质10-属性和方法 www.】.mp4 011-OC对象的本质11-答疑 www.】.mp4 day02/ -202-代码 www.】.zip 012-OC对象的本质12-内存分配注意点 www.】.mp4 013-OC对象的本质13-alloc的size分析 www.】.mp4 014-OC对象的本质14-libmalloc源码 www.】.mp4 015-OC对象的本质15-glibc源码 www.】.mp4 016-OC对象的本质16-sizeof注意点 www.】.mp4 017-OC对象的分类01-instance对象 www.】.mp4 018-OC对象的分类02-class对象 www.】.mp4 019-OC对象的分类03-meta-class对象 www.】.mp4 020-OC对象的分类04-object_getClass内部实现 www.】.mp4 021-OC对象的分类05-答疑 www.】.mp4 day03/ -203-代码 www.】.zip 022-isa和superclass01-isa www.】.mp4 023-isa和superclass02-class的superclass www.】.mp4 024-isa和superclass03-meta-class的superclass www.】.mp4 025-isa和superclass04-总结01 www.】.mp4 026-isa和superclass05-总结02 www.】.mp4 027-isa和superclass06-isa细节 www.】.mp4 028-isa和superclass07-class和meta-class的结构 www.】.mp4 029-isa和superclass08-答疑 www.】.mp4 day04/ -204-代码 www.】.zip 030-KVO01-基本使用 www.】.mp4 031-KVO02-存在的疑问 www.】.mp4 032-KVO03-本质分析 www.】.mp4 033-KVO04-本质验证 www.】.mp4 034-KVO05-窥探Foundation www.】.mp4 035-KVO06-内部调用流程 www.】.mp4 036-KVO07-子类的内部方法01 www.】.mp4 037-KVO08-子类的内部方法02 www.】.mp4 038-KVO09-总结-答疑 www.】.mp4 day05/ -205-代码 www.】.zip 039-KVO10-补充 www.】.mp4 040-KVC01-基本使用 www.】.mp4 041-KVC02-设值的原理 www.】.mp4 042-KVC03-取值的原理 www.】.mp4 043-Category01-基本使用 www.】.mp4 044-Category02底层结构 www.】.mp4 045-Category03源码分析01 www.】.mp4 046-Category04源码分析02 www.】.mp4 047-Category05-memmove、memcpy区别 www.】.mp4 048-Category06答疑 www.】.mp4 day06/ -206-代码 www.】.zip 049-Cateogry07-load01-基本使用 www.】.mp4 050-Cateogry08-load02-调用原理 www.】.mp4 051-Cateogry09-load03-调用顺序 www.】.mp4 052-Cateogry10-initialize01-基本使用 www.】.mp4 053-Cateogry11-initialize02-源码分析 www.】.mp4 054-Cateogry12-initialize03-注意点 www.】.mp4 055-Cateogry13-load、initialize总结 www.】.mp4 day07/ -207-代码 www.】.zip 056-关联对象01-分类添加属性 www.】.mp4 057-关联对象02-使用字典完善属性 www.】.mp4 058-关联对象03-使用字典存在的问题 www.】.mp4 059-关联对象04-基本用法 www.】.mp4 060-关联对象05-key的用法 www.】.mp4 061-关联对象06-答疑 www.】.mp4 062-关联对象07-底层数据结构01 www.】.mp4 063-关联对象08-底层数据结构02 www.】.mp4 064-block01-基本认识 www.】.mp4 day08/ -208-代码 www.】.zip 065-block02-底层数据结构 www.】.mp4 066-block03-变量捕获01-auto变量 www.】.mp4 067-block04-变量捕获02-static变量 www.】.mp4 068-block05-变量捕获03-全局变量 www.】.mp4 069-block06-类型01 www.】.mp4 070-block07-类型02 www.】.mp4 071-block08-答疑 www.】.mp4 day09/ -209-代码 www.】.zip 072-block09-copy www.】.mp4 073-block10-对象类型的auto变量01 www.】.mp4 074-block11-对象类型的auto变量02 www.】.mp4 075-block12-对象类型的auto变量03 www.】.mp4 076-block13-__block01-修改变量 www.】.mp4 077-block14-__block02-本质 www.】.mp4 day10/ -210-代码 www.】.zip 078-block15-__block03-细节 www.】.mp4 079-block16-__block04-内存管理01 www.】.mp4 080-block17-__block05-内存管理02 www.】.mp4 081-block18-__block06-forwarding www.】.mp4 082-block19-__block07-内存管理03 www.】.mp4 083-block20-__block08-内存管理04 www.】.mp4 084-block21-循环引用01-问题 www.】.mp4 085-block22-循环引用02-ARC01 www.】.mp4 086-block23-循环引用03-ARC02 www.】.mp4 087-block24-循环引用04-MRC www.】.mp4 088-block25-总结-答疑 www.】.mp4 day11/ -211-代码 www.】.zip … 共 650 条






