iOS开发高手课 / 从原理到实战,带你解决80%的开发难题
戴铭
前滴滴出行技术专家
 
  • 课程目录
  • 课程介绍
  • 开篇词 | 锚定一个点,然后在这个点上深耕

    移动开发领域这些年出现的这些“新”技术,在我看来可以归结为“万变不离其宗”。

  • 01 | 建立你自己的iOS开发知识体系

    这是我们专栏的第一篇文章。所谓知己知彼,今天我们先来聊聊iOS开发需要掌握哪些知识,以及如何把这些知识融会贯通,进而形成一套成熟的知识体系。

  • 02 | App 启动速度怎么做优化与监控?

    今天这篇文章,我从App启动后会做哪些事儿说起,和你分享了如何把App的启动速度优化到极致。

  • 03 | Auto Layout 是怎么进行自动布局的,性能如何?

    在 iOS 12 上,苹果公司用到了Cassowary算法的界面更新策略,使得 Auto Layout 的性能得到了大幅提升。

  • 04 | 项目大了人员多了,架构怎么设计更合理?

    好的架构,需要在业务开发过程中及早发现开发的痛点,进行有针对性的改良,不然就会和实际开发越走越远。

  • 05 | 链接器:符号是怎么绑定到地址上的?

    了解程序运行阶段的动态库链接原理,会让你更多地了解程序在启动时做的事情,同时还能够对你有一些启发。

  • 06 | App 如何通过注入动态库的方式实现极速编译调试?

    今天这篇文章,我和你详细分享了动态库链接器的一个非常实用的应用场景:如何使用动态库加载方式进行极速调试。由此我们可以看出,类似链接器这样的底层知识是非常重要的。

  • 07 | Clang、Infer 和 OCLint ,我们应该使用谁来做静态分析?

    在今天这篇文章中,我和你一一分析了Clang 静态分析器、Infer和OCLint 这三个 iOS 静态分析工具。

  • 08 | 如何利用 Clang 为 App 提质?

    在今天这篇文章中,我和你说了 Clang 做了什么,以及提供了什么能力。

  • 09 | 无侵入的埋点方案如何实现?

    今天这篇文章,我与你分享了运行时替换方法进行无侵入埋点的方案。

  • 10 | 包大小:如何从资源和代码层面实现全方位瘦身?

    今天这篇文章,我主要和你分享的是App安装包的一些瘦身方案。

  • 11 | 热点问题答疑(一):基础模块问题答疑

    在今天这篇文章中,我梳理了前10篇文章评论区中的问题,并甄选了最最重要、核心的几个问题,和你一起分享。

  • 12 | iOS 崩溃千奇百怪,如何全面监控?

    学完这篇文章之后,我相信你在遇到工具无法提供信息的崩溃场景时,已经具备了自己动手去收集崩溃信息的能力。

  • 13 | 如何利用 RunLoop 原理去监控卡顿?

    今天我给你介绍了使用 RunLoop 监控卡顿的方案,我还跟你说了下 RunLoop 的原理,希望能够帮助你更好地理解 RunLoop 监控卡顿的方案。

  • 14 | 临近 OOM,如何获取详细内存分配信息,分析内存问题?

    今天这篇文章,我主要和你分享的是,在iOS开发中,如何获取详细的内存分配信息,然后分析并解决内存问题。

  • 15 | 日志监控:怎样获取 App 中的全量日志?

    今天,我和你介绍了NSLog和CocoaLumberjack日志的获取方法。你在使用其他日志库时,只要找到日志存储的目录,就可以进行日志的收集合并工作了。

  • 16 | 性能监控:衡量 App 质量的那把尺

    线下的性能监控,使用官方的Instruments。线上的性能监控,主要包括对CPU使用率、内存使用量和FPS的线上监控。

  • 17 | 远超你想象的多线程的那些坑

    多线程的锁问题是最容易查出来的,反而是那些藏在背后,会慢慢吃尽系统资源的问题,才是你在使用多线程技术时需要时刻注意的。

  • 18 | 怎么减少 App 电量消耗?

    今天我跟你分享了如何通过获取线程信息里的cpu_usage 字段来判断耗电线程,进而得到当前线程执行方法堆栈。

  • 19 | 热点问题答疑(二):基础模块问题答疑

    这是我们专栏的第二期答疑文章,我将继续和你分享大家在学习前面文章时遇到的最普遍的问题。

  • 20 | iOS开发的最佳学习路径是什么?

    今天我要分享的是,从一个新人到专家的学习路径。这里面不仅有我的亲身经历,更有我观察到的、身边的那些优秀开发者的经历。

  • 21 | 除了 Cocoa,iOS还可以用哪些 GUI 框架开发?

    在今天这篇文章中,我和你介绍了目前可以用于iOS开发的主流GUI 框架有哪些,这些框架里都有什么,以及它们的渲染流程。

  • 22 | 细说 iOS 响应式框架变迁,哪些思想可以为我所用?

    今天这篇文章,我和你分享了ReactiveCocoa 这种响应式编程框架难以在 iOS 原生开发中流行开的原因。

  • 23 | 如何构造酷炫的物理效果和过场动画效果?

    今天这篇文章,我分享了一个制作动画的利器 Lottie,并和你说了如何在 iOS 中使用,以及它的实现原理。

  • 24 | A/B 测试:验证决策效果的利器

    今天,我和你分享了 A/B测试方案的全景设计,并针对其中iOS开发者最关注的A/B测试 SDK 的设计做了详细分享。

  • 25 | 怎样构建底层的发布和订阅事件总线?

    在今天这篇文章中,我和你分享了事件总线是什么,以及事件总线解决了什么样的问题。

  • 26 | 如何提高 JSON 解析的性能?

    我和你分享了什么是 JSON,JSON 的使用场景,以及simdjson 这个开源 JSON 解析库。

  • 27 | 如何用 Flexbox 思路开发?跟自动布局比,Flexbox 好在哪?

    今天,我主要分享了 Texture 是如何利用 Flexbox 进行 iOS 开发的,以及 Flexbox 的布局算法。

  • 28 | 怎么应对各种富文本表现需求?

    今天我跟你介绍了如何通过 UIWebView 和 YYText 来展示富文本。

  • 29 | 如何在 iOS 中进行面向测试驱动开发和面向行为驱动开发?

    在今天这篇文章中,我和你讨论的是,在iOS开发中,如何进行BDD和TDD。

  • 30 | 如何制定一套适合自己团队的 iOS 编码规范?

    在今天这篇文章中,我和你分享了什么是好的代码规范,以及如何通过 Code Review 将编码规范落实到团队中。

  • 31 | iOS 开发学习资料和书单推荐

    在今天这篇文章中,我和你分享了很多关于iOS开发的学习资料,这其中有优秀的开源项目,也有一些经典的图书。

  • 32 | 热点问题答疑(三)

    我针对一些比较有代表性、你大概率会遇到的留言问题做了解答,包括第三方库的选择、性能衡量标准,以及崩溃分析方面的问题。

  • 33 | iOS 系统内核 XNU:App 如何加载?

    今天我跟你介绍了 iOS 系统的内核 XNU,以及 XNU 是如何加载 App 的。

  • 34 | iOS 黑魔法 Runtime Method Swizzling 背后的原理

    我和你梳理了直接使用 Runtime进行方法交换会有哪些问题,并和你分享了一个更安全的方法交换库 Aspects。

  • 35 | libffi:动态调用和定义 C 函数

    今天,我和你分享了 libffi 的原理,以及怎么使用 libffi 调用和定义 C 函数。

  • 36 | iOS 是怎么管理内存的?

    今天,我和你分享了 iOS 系统内存管理的原理。理解这些原理,能够加深你对系统管理内存方式的理解。

  • 37 | 如何编写 Clang 插件?

    今天这篇文章,我主要和你解决的问题是,如何编写 Clang 插件。

  • 38 | 热点问题答疑(四)

    今天这篇答疑文章,我和你分享了监控卡顿、SMLogger、NSURLProtocol、JSON 相关的问题。

  • 用户故事 | 我是如何学习这个专栏的?

    有道是,方法比努力更重要,只有找到适合自己的学习方法,才能达到事半功倍的效果。

  • 39 | 打通前端与原生的桥梁:JavaScriptCore 能干哪些事情?

    总结来说,JavaScriptCore 提供了前端与原生相互调用的接口。

  • 40 | React Native、Flutter 等,这些跨端方案怎么选?

    今天,我跟你聊了下跨端方案的选择,从长远考虑你可以选择 Flutter。

  • 41 | 原生布局转到前端布局,开发思路有哪些转变?

    原生和前端都是面向用户做交互的,只是前端在某些方面发展得要快些。不过,原生后来者居上,实现了原生和前端共舞的局面。

  • 42 | iOS原生、大前端和Flutter分别是怎么渲染的?

    今天这篇文章,我首先和你说了渲染的原理,然后分别和你展开了原生、大前端、Flutter 是怎么渲染的。

  • 43 | 剖析使 App 具有动态化和热更新能力的方案

    我觉得热更新用哪种方案问题都不大,毕竟只是修复代码。但是,动态化方案的选择,就要更慎重些了,毕竟整个业务都要用。

  • 结束语 | 慢几步,深几度

    我觉得,每个 iOS 开发者,都是喜欢苹果公司的产品、喜欢好的产品设计的人。

《3个 iOS 开发典型问题解答》

《iOS 开发知识脉络图》

《手绘图解 iOS 核心知识点》

从2008年App Store正式对外开放到现在,iOS开发已经走过了十多年时间。这些年里,移动圈子里相继诞生了组件化、热修复、动态化、大前端、Flutter、小程序等热门技术,给人一种“乱花渐欲迷人眼”的感觉。

但是从本质来看,它们背后都是一些通用的底层技术和创新的设计思想。比如,热修复、动态化和大前端的底层技术,都是 JavaScriptCore 这样的 JavaScript 虚拟机技术;再比如,大前端和 Flutter 的渲染,使用的都是 WebCore 中 Skia 这样的渲染引擎。

本专栏就是希望能够带你看懂这些纷繁复杂的技术名词背后的技术本质。

戴铭,前滴滴出行技术专家,深度经历了移动开发和后端技术的演进过程,在组件化方案落地、工程动态化、大前端建设、应用开发阶段效率的提升、上线后各种难点问题的解决等方面的经验非常丰富。

在专栏里,戴铭将会结合自己的成长经历,为你梳理出iOS开发的核心且重要的知识,以遇到问题解决问题的方式带你深度理解这些知识,紧接着通过底层原理的讲解,帮助你能够主动出击,建立从源头消灭问题的能力,最终引导你将各类知识贯穿起来,进而形成一套核心且有深度的知识体系,彻底搞懂iOS开发的方方面面。

同时,为了帮助你理解这些知识,戴铭加入了非常多的精致且优美的手绘图,希望可以带给你一次愉悦的学习体验。

专栏模块

本专栏共43期,包括4大模块。

模块一,基础篇。围绕iOS开发在各个阶段(开发、调试测试、发布和上线)中遇到的问题展开,带你一起剖析问题、解决问题,提升你的编程基本功。

模块二,应用开发。所谓选择大于努力。这个模块,将会和你分享一些经典好用的第三方库,在实战中告诉你应该如何选择,减少重复工作,实现高效开发。同时,通过对这些第三方库背后的原理和实现思路的剖析,让你在遇到千奇百怪的需求时,也能够开发出适合自己需求的库。

模块三,原理篇。讲解一些底层原理,比如系统内核XNU、AOP、内存管理和编译的知识。这样,你就可以在遇到问题时,不再只是被动地见招拆招,而是能主动出击、化险为夷。

模块四,前端与原生共舞。为你拆解原生与前端中的各种技术细节,以及它们之间的内在联系,帮你站在更高的位置,去判断未来的技术走向和趋势。

限时福利