作者参考自己的亲身经历,和观察到的、身边优秀开发者的经历,分享了从一个新人到专家的学习路径,希望帮你少走一些弯路,快速成长。
iOS 开发者可分为四类:
- 完全 0 基础的开发者;
- 刚跨入 iOS 领域的开发者;
- 有一定 iOS 实际开发经验的开发者;
- iOS 开发老手。
下面针对不同类型的开发者,聊聊不同的进阶路径吧~
先看看完全 0 基础的学习资料:
- 通过书籍来学习:《iOS 编程》最新版本,包括了开发语言、Cocoa 设计模式和控件使用、Xcode 技巧等基础的方方面面。
- 通过实例来学习:APPCODA 网站,里面的每篇教程都非常简单易懂,而且带着你一步一步地动手编写程序。
PS:对于小学生和初中生,可以参考知乎 | 12 岁如何入门 iOS 编程?的高赞回答。
不贪基础知识#
基础知识涉及面实在是太广了,而且多偏理论,如果不实践,要想掌握好可不是件简单的事情。但也并不是说基础就不重要了,必要的基础一定要掌握好。那么,对于 iOS 开发者来说,哪些基础是在开始就需要好好学的呢?
刚跨入 iOS 领域的开发者又可以细分为三类,他们有不同的学习路径:
- 在校生:斯坦福大学 | App 开发课程,包含了开发一个 App 所需的最基础的知识,涉及 MVC 架构、iOS 开发语言基础知识、多点触摸、动画、ViewController 的生命周期、Scroll View、多线程、Auto Layout、拖拽、TableView、Collection View、Text Field、持续化存储、弹窗、通知、整个 App 生命周期、Storyboards、Core Motion、摄像等内容;同时还会一步一步带你开发一些简单的 App。附:同步的中文字幕项目。
- 刚参加工作的应届生:Apple 官方开发手册,实际工作中碰到所需要的知识,首翻这个手册。官方的代码示例都很规范,分类很清晰,内容全,大致可以分为 App Frameworks、图形、App 服务、媒体、开发工具、系统等板块。附:Apple 官方 iOS 开发指南(基于 Swift)。
- 从其他领域转向 iOS 开发的老手:RayWenderlich 网站,里面的每一个教程都有详细的指导,以掌握具体的知识点,可以根据工作需要学习具体的类别。
掌握了一定的基础知识后,如何继续提升自己的 iOS 开发技能呢?
- 唐巧 | iOS 开发如何提高。
- limboy | 自学 iOS 开发的一些经验。
- Futurice | iOS 最佳实践指导,里面包含了完整的 App 开发生命周期、从 IDE 搭建工程的最佳使用方式、基础库选择、架构选择、存储方式、资源管理、代码规范、安全、静态分析、崩溃分析、构建,到部署,甚至是 IAP (In-App Purchases,应用内支付) 都考虑到了。
- SwiftGG | Swift 中文版手册、Swift 官方博客。
在实践中积累#
对于工作实践中涉及到的领域相关知识,一定要贪多,而且越多越好。
在实践中积累,特别适合有几年工作经验的开发者:
- 时刻关注和你工作内容相关领域知识的发展动向,并全面掌握;
- 及时进行整理和总结,多进行一些思考,问问自己为什么这么做,还有没有更好的做法;
- 最后进行输出,听听他人的意见,多交流。
殊途同归,深挖知识#
不管哪个领域,殊途同归,底层知识都是最值得深挖、最需要持续学习的。
推荐:Michael Ash | The Complete Friday Q&A 书,里面涉及的内容,会让你了解更多内存、性能和系统内部的原理,他的博客你也可以逛逛。
最后,iOS 开发老手(扎实的 iOS 基础 + 实践经验 + 工作成绩)的进阶路径,应该是选择一个方向持续地深入学习,学习方式可以是从头实现一个技术雏型,比如:
- LLVM 编译器:实现一个简单的编译器或解释器,可参考最小的 C 编译器 OTCC(Obfuscated Tiny C Compiler)。
- 数据库:动手开发一个简单的数据库项目,可参考 Let’s Build a Simple Database 教程。
- 操作系统:学着从头创建一个操作系统,可参考 os-tutorial 教程,带你开发一个麻雀虽小五脏俱全的操作系统,包括系统启动、中断处理、屏幕输出键盘输入、basic libc、内存管理、文件存储系统、简单的 shell、用户模式、文本编辑器、多进程和调度等,帮你更深刻地理解分页、信号量、内存管理等知识。
除此之外,iOS 老手还可以使用已掌握的技术栈,触类旁通地去接触其他领域,拓宽自己的技术视野。比如,使用 加拿大团队 | Perfect 可以让 Swift 做服务器的开发。
师父领进门,修行靠个人。好好梳理自己的知识体系,查漏补缺让自己的知识更体系化吧!