0156fea8cc60760bdf6d2bd4229514d1
iOS 开发舆图

43篇 《iOS开发高手课》已完成,后面会对内容进行迭代,丰富下内容和配图。最近画了张 iOS 开发全景舆图,还有相关一些资料整理,方便我平时开发 App 时参看。舆图如下:






我按照 iOS 开发地图的顺序,和你推荐一些相关的学习资料。

实例

学习 iOS 开发最好是从学习一个完整的 App 入手,GitHub上的Open-Source iOS Apps
项目,收录了大量开源的完整 App 例子,比如 Hacker News Reader 等已经上架了 App Store 的应用程序,所有例子都会标注是否上架 App Store的、所使用开发语言、推荐等级等信息,有利于进行选择学习。

开发一个完整的 App 也有最佳实践,这里有份最佳实践可以参考。

下面两个教程网站都会手把手通过实例教你怎么动手学习 iOS 各个知识点。
1. AppCoda
2. Raywenderlich

iOS 基础

完整开发了多个 App 后,为了更好、更快的掌握开发,你就会有需要了解更多 iOS 基础知识的诉求,包括列表的优化、高效界面布局开发、图表图形、图片处理、动画多媒体等等。

图形渲染 Metal 框架的学习可以参看下面四篇文章
1. Metal
2. 基于 Metal 的 ARKit 使用指南(上)
3. 基于 Metal 的 ARKit 使用指南(下)
4. 基于 Metal 的现代渲染技术

iOS 系统

iOS 基础学习到一定程度就需要了解 App 是如何在系统中工作的,系统提供了什么基础功能,提供了哪些界面控件等等。

扩展知识可以阅读下面四本书:
1. 《深入解析Mac OS X & iOS操作系统》
2. 《现代操作系统》
3. 《深入理解计算机系统》
4. 《程序员的自我修养》

编程语言

编程语言的学习可以参考官方手册,对于 Runtime 的扩展文章阅读:

  1. Objective-C 消息发送与转发机制原理
  2. 神经病院Objective-C Runtime入院第一天——isa和Classhttps://halfrost.com/objc_runtime_isa_class/
  3. 神经病院 Objective-C Runtime 住院第二天——消息发送与转发
  4. 神经病院 Objective-C Runtime 出院第三天——如何正确使用

编程语言 Swift 推荐阅读书籍是《Swift 进阶》、《函数式Swift》。大量Swift Playground 可以了解 Swift 编程语言的特性,这里有份整理 GitHub - uraimo/Awesome-Swift-Playgrounds: A List of Awesome Swift Playgrounds 。这份资料汇总了 SwiftUI 的资料 GitHub - Juanpe/About-SwiftUI: Gathering all info published, both by Apple and by others, about new framework SwiftUI. 。这里有本在线书详细讲解了 Combine
《Using Combine》

架构相关扩展阅读可以参看 iOS 组件化相关讨论文章汇总 | KANGZUBIN

设计模式推荐书籍如下:
* 《设计模式 可复用面向对象软件的基础》
* 《Objective-C 编程之道:iOS设计模式解析》
* 《Head First 设计模式》
* 《大话设计模式》

开发工具

开发的代码多了,开发效率和开发质量的提升就越来越离不开开发工具了。

iOS 开发工具 Xcode、Instrument 的使用学习,推荐看苹果开发者大会 WWDC 的 Session 视频。

扩展阅读文章推荐:
1. The Architecture of Open Source Application
2. Writing AST matchers for libclang
3. 使用 OCLint 自定义 MVVM 规则
4. iOS 增量代码覆盖率检测实践

阅读书籍推荐:
1. 《Getting Started with LLVM Core Libraries》
2. 《Modern Compiler Implementation in C》
3. 《Compiler》

开发完成

当开发完成后就需要进行调试、持续化交付、测试。

LLDB 调试推荐先看官方指南,再看这篇“与调试器共舞 - LLDB 的华尔兹”。为了更好的调试体验扩展 LLDB 可以参看这篇文章“How to Extend LLDB to Provide a Better Debugging Experience”

另外,这个网址收录了各种调试资料。

持续化交付可以参看各大公司的实践,比如:
1. 知乎 iOS 客户端工程化工具 - Venom
2. 百度App iOS工程化实践: EasyBox破冰之旅
3. 如何实现“持续集成”?淘系闲鱼把研发效率翻了个翻

测试扩展阅读推荐文章如下:
1. TDD的iOS开发初步以及Kiwi使用入门
2. Kiwi 使用进阶 Mock, Stub, 参数捕获和异步测试
3. Unit Testing
4. 客户端自动化测试研究
5. PICK一下,iOS自动化测试新方案出道
6. 爱奇艺基于AI的移动端自动化测试框架的设计

上线后

开发完成后,做完测试,就可以上线了。上线后还需要做大量监控保证用户使用 App 的高可用性和好体验。动态化保证发版灵活和问题的快速修复。

推荐的扩展阅读如下:
1. iOS应用启动性能优化资料
2. iOS启动时间优化
3. Understanding and Analyzing Application Crash Reports
4. PLCrashreporter源码分析其一
5. PLCrashreporter源码分析其二
6. How Not to Crash
7. Logan:美团点评的开源移动端基础日志库
8. Hook Objective-C Block with Libffi
9. Hot or Not? The Benefits and Risks of iOS Remote Hot Patching

计算机基础

经历多次 App 开发到上线后的过程,碰到问题,解决问题,越发觉得计算机基础的重要性。牢固的基础能有利于碰到问题时快速定位和解决。

推荐扩展阅读文章和资源如下:
1. Algorithms and data structures in Swift, with explanations!
2. iOS Memory Deep Dive
3. iOS App Performance: Memory
4. No pressure, Mon! Handling low memory conditions in iOS and Mavericks
5. 从零构建 Dispatch Queue
6. Threading Programming Guide(1)
7. Threading Programming Guide(2)
8. Threading Programming Guide(3)
9. Swift 中的锁和线程安全
10. 浅谈一种解决多线程野指针的新思路
11. 深入理解 GCD
12. 深入浅出GCD
13. 解密 Runloop
14. Matrix-iOS 卡顿监控

通用知识

iOS 开发中还有很多和其他计算机领域相通的知识,比如渲染、数据库、网络等。

推荐扩展阅读文章有:
1. 深入理解 iOS Rendering Process
2. 绘制像素到屏幕上
3. 手把手教你封装网络层
4. A high performance JSON library in Swift

网络相关文章推荐如下:
1. 百度App网络深度优化系列《三》弱网优化
2. iOS 流量监控分析 | 周小鱼のCODE_HOME
3. TCP/IP(一):数据链路层
4. TCP/IP(二):IP 协议
5. TCP/IP(三):IP 协议相关技术
6. TCP/IP(四):TCP 与 UDP 协议简介
7. TCP/IP(五):TCP 协议详解
8. TCP/IP(六):HTTP 与 HTTPS 简介
9. 携程App的网络性能优化实践
10. 美团点评移动网络优化实践
11. 万人低头时代,支付宝APP无线网络性能该如何保障
12. QQ空间在生产环境使用QUIC协议的经验
13. 美图HTTPS优化探索与实践
14. 九个问题从入门到熟悉 HTTPS
15. 试图取代 TCP 的 QUIC 协议到底是什么
16. 小谈 HTTP 中的编码
17. 利用 WireShark 深入调试网络请求
18. 关于 iOS HTTP2.0 的一次学习实践 - 掘金
19. 移动 APP 网络优化概述 « bang’s blog
20. GYHttpMock:iOS HTTP请求模拟工具 | WeRead团队博客
21. YTKNetwork源码解析 | J_Knight_
22. LefexWork/iOS 需要掌握的 HTTP 知识.md at master · lefex/LefexWork · GitHub
23. LefexWork/以不一样的方式理解SDWebImage.md at master · lefex/LefexWork · GitHub
24. Alamofire的设计之道 - Leo的专栏 - CSDN博客

专有知识

专有知识我就不展开说了,参考上面舆图中标注的知识点去检索你需要的就可以了。

视野

推荐手册:
1. Apple Developer Documentation
2. Swift 开发手册

开源控件:
1. iOS Example
2. Cocoa Controls
3. awesome-swift
4. Swift 开源项目精选 - 应用架构角度
5. Swift 开源项目精选导图
6. SwiftGuide
7. Swift 开源项目团队介绍
8. Swift 知名开发者介绍

视频推荐 Swift Talk - objc.io

这里的 iOS 博客都很值得订阅,GitHub - awesome-tips/blogs: 行业优质博客汇总

其他资源参看上面的地图。

© 著作权归作者所有
这个作品真棒,我要支持一下!
iOS开发,个人工作和兴趣的记录。 作者介绍: 滴滴 iOS 开发工程师,热爱开源分享。@Swift 大会...
18条评论
四月
#1

看完整篇技能树,有种深深坐井观天的感觉…

清龙
#2

这技能树有点高啊 我连树根都看不到。。

人月神化?是人月神话吧

dual
#4

好学习天天向上

持之以恒,不断学习,不断进步。

膜拜大神

斯雨
#8

666

subject
#9

oxy
#10

只能说太太牛逼了!

面试前可以按这个查漏补缺了

落夏
#13

技能树真的不是一般的高,知识储备太足了。向大佬学习,每天都得进步才行

方雄
#14

非常感谢戴老师的用心整理。

李杰76
#15

感谢戴老师的无私

童46
#16

感谢戴老师 好人一生平安

kenshin
#17

活到老学到死

感谢分享

top Created with Sketch.