43篇 《iOS开发高手课》已完成,后面会对内容进行迭代,丰富下内容和配图。最近画了张 iOS 开发全景舆图,还有相关一些资料整理,方便我平时开发 App 时参看。舆图如下:
接下来,我按照 iOS 开发地图的顺序,和你推荐一些相关的学习资料。
实例
学习 iOS 开发最好是从学习一个完整的 App 入手,GitHub上的Open-Source iOS Apps
项目,收录了大量开源的完整 App 例子,比如 Hacker News Reader 等已经上架了 App Store 的应用程序,所有例子都会标注是否上架 App Store的、所使用开发语言、推荐等级等信息,有利于进行选择学习。
开发一个完整的 App 也有最佳实践,这里有份最佳实践可以参考。
下面两个教程网站都会手把手通过实例教你怎么动手学习 iOS 各个知识点。
- AppCoda
- Raywenderlich
iOS 基础
完整开发了多个 App 后,为了更好、更快的掌握开发,你就会有需要了解更多 iOS 基础知识的诉求,包括列表的优化、高效界面布局开发、图表图形、图片处理、动画多媒体等等。
图形渲染 Metal 框架的学习可以参看下面四篇文章
- Metal
- 基于 Metal 的 ARKit 使用指南(上)
- 基于 Metal 的 ARKit 使用指南(下)
- 基于 Metal 的现代渲染技术
iOS 系统
iOS 基础学习到一定程度就需要了解 App 是如何在系统中工作的,系统提供了什么基础功能,提供了哪些界面控件等等。
扩展知识可以阅读下面四本书:
- 《深入解析Mac OS X & iOS操作系统》
- 《现代操作系统》
- 《深入理解计算机系统》
- 《程序员的自我修养》
编程语言
编程语言的学习可以参考官方手册,对于 Runtime 的扩展文章阅读:
- Objective-C 消息发送与转发机制原理
- 神经病院Objective-C Runtime入院第一天——isa和Class( https://halfrost.com/objc_runtime_isa_class/ )
- 神经病院 Objective-C Runtime 住院第二天——消息发送与转发
- 神经病院 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 视频。
扩展阅读文章推荐:
- The Architecture of Open Source Application
- Writing AST matchers for libclang
- 使用 OCLint 自定义 MVVM 规则
- iOS 增量代码覆盖率检测实践
阅读书籍推荐:
- 《Getting Started with LLVM Core Libraries》
- 《Modern Compiler Implementation in C》
- 《Compiler》
开发完成
当开发完成后就需要进行调试、持续化交付、测试。
LLDB 调试推荐先看官方指南,再看这篇“与调试器共舞 - LLDB 的华尔兹”。为了更好的调试体验扩展 LLDB 可以参看这篇文章“How to Extend LLDB to Provide a Better Debugging Experience”。
另外,这个网址收录了各种调试资料。
持续化交付可以参看各大公司的实践,比如:
- 知乎 iOS 客户端工程化工具 - Venom
- 百度App iOS工程化实践: EasyBox破冰之旅
- 如何实现“持续集成”?淘系闲鱼把研发效率翻了个翻
测试扩展阅读推荐文章如下:
- TDD的iOS开发初步以及Kiwi使用入门
- Kiwi 使用进阶 Mock, Stub, 参数捕获和异步测试
- Unit Testing
- 客户端自动化测试研究
- PICK一下,iOS自动化测试新方案出道
- 爱奇艺基于AI的移动端自动化测试框架的设计
上线后
开发完成后,做完测试,就可以上线了。上线后还需要做大量监控保证用户使用 App 的高可用性和好体验。动态化保证发版灵活和问题的快速修复。
推荐的扩展阅读如下:
- iOS应用启动性能优化资料
- iOS启动时间优化
- Understanding and Analyzing Application Crash Reports
- PLCrashreporter源码分析其一
- PLCrashreporter源码分析其二
- How Not to Crash
- Logan:美团点评的开源移动端基础日志库
- Hook Objective-C Block with Libffi
- Hot or Not? The Benefits and Risks of iOS Remote Hot Patching
计算机基础
经历多次 App 开发到上线后的过程,碰到问题,解决问题,越发觉得计算机基础的重要性。牢固的基础能有利于碰到问题时快速定位和解决。
推荐扩展阅读文章和资源如下:
- Algorithms and data structures in Swift, with explanations!
- iOS Memory Deep Dive
- iOS App Performance: Memory
- No pressure, Mon! Handling low memory conditions in iOS and Mavericks
- 从零构建 Dispatch Queue
- Threading Programming Guide(1)
- Threading Programming Guide(2)
- Threading Programming Guide(3)
- Swift 中的锁和线程安全
- 浅谈一种解决多线程野指针的新思路
- 深入理解 GCD
- 深入浅出GCD
- 解密 Runloop
- Matrix-iOS 卡顿监控
通用知识
iOS 开发中还有很多和其他计算机领域相通的知识,比如渲染、数据库、网络等。
推荐扩展阅读文章有:
- 深入理解 iOS Rendering Process
- 绘制像素到屏幕上
- 手把手教你封装网络层
- A high performance JSON library in Swift
网络相关文章推荐如下:
- 百度App网络深度优化系列《三》弱网优化
- iOS 流量监控分析 | 周小鱼のCODE_HOME
- TCP/IP(一):数据链路层
- TCP/IP(二):IP 协议
- TCP/IP(三):IP 协议相关技术
- TCP/IP(四):TCP 与 UDP 协议简介
- TCP/IP(五):TCP 协议详解
- TCP/IP(六):HTTP 与 HTTPS 简介
- 携程App的网络性能优化实践
- 美团点评移动网络优化实践
- 万人低头时代,支付宝APP无线网络性能该如何保障
- QQ空间在生产环境使用QUIC协议的经验
- 美图HTTPS优化探索与实践
- 九个问题从入门到熟悉 HTTPS
- 试图取代 TCP 的 QUIC 协议到底是什么
- 小谈 HTTP 中的编码
- 利用 WireShark 深入调试网络请求
- 关于 iOS HTTP2.0 的一次学习实践 - 掘金
- 移动 APP 网络优化概述 « bang’s blog
- GYHttpMock:iOS HTTP请求模拟工具 | WeRead团队博客
- YTKNetwork源码解析 | JKnight
- LefexWork/iOS 需要掌握的 HTTP 知识.md at master · lefex/LefexWork · GitHub
- LefexWork/以不一样的方式理解SDWebImage.md at master · lefex/LefexWork · GitHub
- Alamofire的设计之道 - Leo的专栏 - CSDN博客
专有知识
专有知识我就不展开说了,参考上面舆图中标注的知识点去检索你需要的就可以了。
视野
推荐手册:
- Apple Developer Documentation
- Swift 开发手册
开源控件:
- iOS Example
- Cocoa Controls
- awesome-swift
- Swift 开源项目精选 - 应用架构角度
- Swift 开源项目精选导图
- SwiftGuide
- Swift 开源项目团队介绍
- Swift 知名开发者介绍
视频推荐 Swift Talk - objc.io 。