[图片上传失败...(image-4db721-1568101135453)]
[图片上传失败...(image-10a6eb-1568101135453)]
接下来,我按照 iOS 开发地图的顺序,和你推荐一些相关的学习资料。
实例
学习 iOS 开发最好是从学习一个完整的 App 入手,GitHub上的Open-Source iOS Apps
项目,收录了大量开源的完整 App 例子,比如 Hacker News Reader 等已经上架了 App Store 的应用程序,所有例子都会标注是否上架 App Store的、所使用开发语言、推荐等级等信息,有利于进行选择学习。
开发一个完整的 App 也有最佳实践,这里有份最佳实践可以参考。
下面两个教程网站都会手把手通过实例教你怎么动手学习 iOS 各个知识点。
iOS 基础
完整开发了多个 App 后,为了更好、更快的掌握开发,你就会有需要了解更多 iOS 基础知识的诉求,包括列表的优化、高效界面布局开发、图表图形、图片处理、动画多媒体等等。
图形渲染 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”。
另外,这个网址收录了各种调试资料。
持续化交付可以参看各大公司的实践,比如:
测试扩展阅读推荐文章如下:
- 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 开发中还有很多和其他计算机领域相通的知识,比如渲染、数据库、网络等。
推荐扩展阅读文章有:
网络相关文章推荐如下:
- 百度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博客
专有知识
专有知识我就不展开说了,参考上面舆图中标注的知识点去检索你需要的就可以了。
视野
推荐手册:
开源控件:
- iOS Example
- Cocoa Controls
- awesome-swift
- Swift 开源项目精选 - 应用架构角度
- Swift 开源项目精选导图
- SwiftGuide
- Swift 开源项目团队介绍
- Swift 知名开发者介绍
视频推荐 Swift Talk - objc.io 。
这里的 iOS 博客都很值得订阅,GitHub - awesome-tips/blogs: 行业优质博客汇总。
- 本文作者: 戴铭
- 本文链接: http://ming1016.github.io/2019/07/29/ios-map/