写 iOS 的人很多,但能说清楚「这块内存为什么没释放」「这个列表为什么掉帧」「这个模块为什么越改越乱」的人不多。日常业务需求能推着人往前走,却很少逼人回头看底层:ARC 到底在编译期和运行期各做了什么,autoreleasepool 在什么时机被 drain,离屏渲染是哪几个属性触发的,启动阶段哪几百毫秒是白花的。这些问题的答案不在文档的「入门」章节里,而在你踩过坑、又回头补过课之后。这份 iOS 开发大师课面向的就是这个阶段:能写、能跑,但想搞清楚为什么这么写、以及怎么写才不给自己挖坑。

它补的是哪几块缺口

第一块是内存。不是背一遍 strong / weak / copy 的区别,而是能从引用计数、循环引用、autoreleasepool 的嵌套关系上解释一次内存峰值是怎么形成的,以及 Instruments 里那条曲线对应代码中的哪一行。第二块是性能。启动耗时、列表滚动、图片解码、渲染管线,这些指标不是靠「优化一下」解决的,得先知道它们各自的瓶颈在哪一层。第三块是架构。MVC 被吐槽多年,但真正的分歧点在于分层边界画在哪里、模块之间靠什么通信、状态往哪放。第四块是工程习惯:怎么读一份陌生的 iOS 代码,怎么定位一个偶现崩溃,怎么判断手里的方案值不值得改。

学的时候建议这样用

  • 每听完一个专题,回到自己手上的项目找一处对应代码。讲内存就把 Xcode 的内存图打开,讲启动就把启动埋点翻出来,讲架构就画一遍当前模块的依赖关系。看别人的实现对照自己的,差距最明显。
  • 不要一次追完。内存、性能、架构这三块的吸收速度不一样,架构那部分尤其需要先有真实项目的困惑做底,否则容易听成一堆名词。
  • 把音频当作复习通道,通勤时重听对应章节;PDF 用来做精读和笔记。同一个主题先用音频过一遍轮廓,再用文档抠细节,比一上来啃文档顺。
  • 遇到暂时对不上的内容先记下来。有些知识点要等你真正遇到那个 bug 才会被激活,标记比强行理解更有用。

看完应该能回答的问题

如果你真的把内容接住了,下面这些问题应该能张口就答,而不是含糊过去:一个对象在什么情况下会被放进 autoreleasepool,主线程的 pool 和你自己创建的 pool 有什么区别;weak 变量在被置 nil 的那一刻发生了什么;tableView 滚动卡顿,你会按什么顺序去排查;App 冷启动从点击图标到首帧上屏,中间有哪些你能插手的时间片;一个模块要拆出去,接口该按什么粒度切,通信层用什么方案;两个线程同时读写同一份状态,你会选锁、串行队列还是别的,为什么。这些问题没有一条能靠背答案糊过去,都得先在脑子里建过模型。

适合谁,不适合谁

适合已经写过至少一个完整 iOS 项目、能独立完成业务功能、但对底层机制和工程决策还没把握的人。也适合从其他语言转过来、语法不是问题但框架心智模型还没建立的人。如果你完全没碰过 Swift 或 Objective-C,连一个页面都还没跑起来,这份内容会让你很吃力——先把基础工程跑通,再回来补这块更划算。同样,只想找一个能照抄的架构模板的人也不合适,这里讲的是判断依据,不是现成的脚手架。

别指望看完就什么都懂。它的作用是让你在面对性能数字和架构争议时,手里有依据、嘴上有理由,而不是凭感觉说「应该差不多」。缺哪块补哪块,暂时用不上的部分标记好,等碰上问题再回来。

极客时间 iOS 开发大师课

深入iOS开发核心,构建高性能App

编辑点评

系统讲解iOS开发知识体系,涵盖内存管理、性能优化、架构设计等,适合有志于深入iOS开发的开发者。

⭐ 编辑推荐

极客时间iOS开发大师课,带你深入iOS开发核心,掌握构建高性能App的技巧。

课程亮点

• 系统知识体系
• 性能优化
• 架构设计

课程目录

极客时间iOS开发高手课文档.png  [493.5 KB]
21   除了 Cocoa iOS还可以用哪些 GUI 框架开发.mp3  [6.1 MB]
36   iOS 是怎么管理内存的.pdf  [438.3 KB]
27_如何用_Flexbox_思路开发_跟自动布局比_Flexbox_好在哪.mp3  [5.4 MB]
03   Auto Layout 是怎么进行自动布局的 性能如何.mp3  [5.4 MB]
07_Clang_Infer_和_OCLint_我们应该使用谁来做静态分析.mp3  [7.6 MB]
22_细说_iOS_响应式框架变迁_哪些思想可以为我所用.pdf  [547.0 KB]
23   如何构造酷炫的物理效果和过场动画效果.mp3  [4.5 MB]
01   建立你自己的iOS开发知识体系.mp3  [5.2 MB]
10_包大小_如何从资源和代码层面实现全方位瘦身.pdf  [3.3 MB]
27_如何用_Flexbox_思路开发_跟自动布局比_Flexbox_好在哪.pdf  [883.8 KB]
25   怎样构建底层的发布和订阅事件总线.mp3  [4.3 MB]
33   iOS 系统内核 XNU App 如何加载.mp3  [5.6 MB]
09   无侵入的埋点方案如何实现.pdf  [593.7 KB]
15   日志监控 怎样获取 App 中的全量日志.pdf  [478.4 KB]
21   除了 Cocoa iOS还可以用哪些 GUI 框架开发.pdf  [529.6 KB]
37   如何编写 Clang 插件.pdf  [519.0 KB]
40   React Native Flutter 等 这些跨端方案怎么选.pdf  [433.4 KB]
16   性能监控 衡量 App 质量的那把尺.pdf  [1.5 MB]
17   远超你想象的多线程的那些坑.pdf  [508.8 KB]
13   如何利用 RunLoop 原理去监控卡顿.mp3  [5.1 MB]
41_原生布局转到前端布局_开发思路有哪些转变.pdf  [626.4 KB]
14_临近_OOM_如何获取详细内存分配信息_分析内存问题.mp3  [5.4 MB]
29_如何在_iOS_中进行面向测试驱动开发和面向行为驱动开发.pdf  [359.5 KB]
30_如何制定一套适合自己团队的_iOS_编码规范.mp3  [5.3 MB]
19   热点问题答疑 二  基础模块问题答疑.pdf  [390.3 KB]
28   怎么应对各种富文本表现需求.pdf  [409.6 KB]
23   如何构造酷炫的物理效果和过场动画效果.pdf  [526.1 KB]
17   远超你想象的多线程的那些坑.mp3  [6.3 MB]
20   iOS开发的最佳学习路径是什么.mp3  [7.3 MB]
02   App 启动速度怎么做优化与监控.mp3  [8.9 MB]
12   iOS 崩溃千奇百怪 如何全面监控.mp3  [7.8 MB]
32   热点问题答疑 三.pdf  [854.7 KB]
06_App_如何通过注入动态库的方式实现极速编译调试.pdf  [1.4 MB]
34   iOS 黑魔法 Runtime Method Swizzling 背后的原理.mp3  [4.3 MB]
13   如何利用 RunLoop 原理去监控卡顿.pdf  [729.4 KB]
31   iOS 开发学习资料和书单推荐.mp3  [3.6 MB]
39_打通前端与原生的桥梁_JavaScriptCore_能干哪些事情.pdf  [584.5 KB]
02   App 启动速度怎么做优化与监控.pdf  [2.7 MB]
42   iOS原生 大前端和Flutter分别是怎么渲染的.pdf  [407.8 KB]
结束语   慢几步 深几度.mp3  [2.2 MB]
20   iOS开发的最佳学习路径是什么.pdf  [529.6 KB]
24   A-B 测试 验证决策效果的利器.pdf  [482.5 KB]
03   Auto Layout 是怎么进行自动布局的 性能如何.pdf  [1.9 MB]
43_剖析使_App_具有动态化和热更新能力的方案.pdf  [398.7 KB]
09   无侵入的埋点方案如何实现.mp3  [4.5 MB]
29_如何在_iOS_中进行面向测试驱动开发和面向行为驱动开发.mp3  [4.5 MB]
26   如何提高 JSON 解析的性能.pdf  [860.6 KB]
35   libffi 动态调用和定义 C 函数.mp3  [6.8 MB]
开篇词   锚定一个点 然后在这个点上深耕.mp3  [4.3 MB]
04   项目大了人员多了 架构怎么设计更合理.pdf  [1.8 MB]
14_临近_OOM_如何获取详细内存分配信息_分析内存问题.pdf  [650.2 KB]
16   性能监控 衡量 App 质量的那把尺.mp3  [5.5 MB]
19   热点问题答疑 二  基础模块问题答疑.mp3  [8.3 MB]
07_Clang_Infer_和_OCLint_我们应该使用谁来做静态分析.pdf  [691.5 KB]
08   如何利用 Clang 为 App 提质.mp3  [5.8 MB]
05   链接器 符号是怎么绑定到地址上的.mp3  [7.6 MB]
01   建立你自己的iOS开发知识体系.pdf  [1.1 MB]
18   怎么减少 App 电量消耗.mp3  [3.8 MB]
42   iOS原生 大前端和Flutter分别是怎么渲染的.mp3  [4.7 MB]
31   iOS 开发学习资料和书单推荐.pdf  [447.5 KB]
12   iOS 崩溃千奇百怪 如何全面监控.pdf  [1.7 MB]
28   怎么应对各种富文本表现需求.mp3  [4.1 MB]
36   iOS 是怎么管理内存的.mp3  [5.6 MB]
37   如何编写 Clang 插件.mp3  [6.4 MB]
39_打通前端与原生的桥梁_JavaScriptCore_能干哪些事情.mp3  [6.0 MB]
10_包大小_如何从资源和代码层面实现全方位瘦身.mp3  [10.4 MB]
24   A-B 测试 验证决策效果的利器.mp3  [4.6 MB]
34   iOS 黑魔法 Runtime Method Swizzling 背后的原理.pdf  [362.2 KB]
06_App_如何通过注入动态库的方式实现极速编译调试.mp3  [2.9 MB]
用户故事   我是如何学习这个专栏的.pdf  [358.6 KB]
25   怎样构建底层的发布和订阅事件总线.pdf  [459.8 KB]
04   项目大了人员多了 架构怎么设计更合理.mp3  [9.9 MB]
08   如何利用 Clang 为 App 提质.pdf  [743.5 KB]
18   怎么减少 App 电量消耗.pdf  [469.9 KB]
38   热点问题答疑 四.pdf  [300.9 KB]
15   日志监控 怎样获取 App 中的全量日志.mp3  [7.0 MB]
开篇词   锚定一个点 然后在这个点上深耕.pdf  [539.5 KB]
41_原生布局转到前端布局_开发思路有哪些转变.mp3  [5.4 MB]
40   React Native Flutter 等 这些跨端方案怎么选.mp3  [4.8 MB]
30_如何制定一套适合自己团队的_iOS_编码规范.pdf  [398.6 KB]
结束语   慢几步 深几度.pdf  [377.0 KB]
用户故事   我是如何学习这个专栏的.mp3  [9.0 MB]
11   热点问题答疑 一  基础模块问题答疑.pdf  [500.8 KB]
26   如何提高 JSON 解析的性能.mp3  [5.2 MB]
33   iOS 系统内核 XNU App 如何加载.pdf  [528.9 KB]
38   热点问题答疑 四.mp3  [4.2 MB]
43_剖析使_App_具有动态化和热更新能力的方案.mp3  [6.3 MB]
11   热点问题答疑 一  基础模块问题答疑.mp3  [7.2 MB]
35   libffi 动态调用和定义 C 函数.pdf  [334.5 KB]
05   链接器 符号是怎么绑定到地址上的.pdf  [1.6 MB]
22_细说_iOS_响应式框架变迁_哪些思想可以为我所用.mp3  [5.0 MB]
32   热点问题答疑 三.mp3  [4.4 MB]

适合人群

  • iOS开发者
  • 移动应用开发爱好者

学习收获

掌握iOS开发核心知识
提升App性能
优化开发流程

祝您学习愉快!

学有所成,前程似锦!