iOS开发技术栈及相应资料总结
iOS技术栈
这里按我的理解给 iOS 相关技术分个类,以工程实现的角度,分成了基础、需求、效率、质量四个类别。基础指程序开发和 iOS 开发的基础知识和技能,需求就是产品的需求,有了基础技能,实现了产品需求后,剩下的事情就都是为了提高项目质量和提升开发效率。
大致的思维导图:
基础
基础包括语言、框架、内存、网络、存储、渲染、线程。
语言目前 iOS 开发就是 OC 和 Swift,国内仍以 OC 为主,对于 OC 除了语法外,最好了解它的对象模型,动态机制等特性。Swift 方面若要在团队里使用,目前还是风险大收益小的,但个人最好保持对它的关注。
-
语言
对象模型
动态机制
-
内存
-
网络
-
存储
-
渲染
-
线程
需求
- 普通需求
- 特殊需求
- 运营需求
质量
效率
进阶
在实践中学习,具体来说就是在平时开发过程中不断地发现问题 -> 解决问题。
- 发现问题
首先你最好处在一个有很多工程上的问题急需解决的环境里,这样发现问题就很容易,最好的是处于这几类项目里: - 处于高速发展期的项目。增长会带来很多问题,一切又未成熟,解决这些问题是非常自然又有价值的。
- 庞大的项目,超级APP会带来很多中小型APP没有遇到过的问题,又因为体量大,就算只有千分之一的人遇到也会影响几十万人,很有解决的价值,会有很多细致的问题。
- 像上面提到的有“特殊需求”一类的项目,需要在一个领域里深入研究,也会自然碰到很多问题。
如果恰巧没有在这三种类型的项目里,也没关系,只要是健康发展的项目,总会存在问题和优化空间,只是要培养发现问题的意识,很多时候问题就在那里,但没人发现它,没人觉得它可以/应该解决。可以按上述列的点,在相关点上多问自己能不能提高效率和质量,例如能不能提高前后台联调效率,重复写的代码能不能自动生成,启动耗时能不能短一点,线上问题发现和排查的效率能不能提高等等。各种问题会涵盖上述提到的所有知识点。
如果不幸你的项目没有健康发展,实在没碰到什么问题或者问题不值得解决,或者你还没毕业,那这里还有一个万能问题可供参考:那些知名的开源项目具体是怎样实现的?剖析开源项目源码可以学到很多东西,各种各样的开源项目也覆盖了很多知识面,只要深入去研究它们,学习它的架构和编码,不懂的地方再去补齐知识,也是个很好的学习方式,如果学习后能输出文章效果会更好,相当于动手实践了。
解决问题
不同的解决问题的方式差别很大,有一些常见的套路可供参考:业界是怎样解决这个问题的?他们的方案有什么不足?我怎样可以做得更好?
业界有各种各样的开源库和技术分享,只要问题不是太偏门,大多会有人已经提出解决方案,多对比和研究这些已有的方案,看它们是否能满足需求,找出它们的优点和不足,看看能不能做得比它们更好或更适合解决碰到的问题。解决方案能否通用化,封装成开源库供其他项目使用?
开源项目都是这样来的,如果遇到一个别人没解决好的问题,别错过封装成开源库造福社会。有没有办法防止以后出现类似的问题?
有些问题可能会反复出现,能不能防止,或者能不能在出现问题的时候能及时发现和修复,这可能涉及到开发流程、自动化和监控体系等方面的完善。总结沉淀
能不能总结出解决这类问题的方法论(套路)?最好能输出文章或分享,写的过程是很好的学习过程,因为要把原本模糊的想法都清晰地表达出来,迫使自己去整理思路。
总结
这里按我的理解列了 iOS 相关技术点,以及在实践中提升能力的一点小建议,可能无法各方面都覆盖到,只是作为一个参考。另外这里只局限在 iOS 开发上,实际上作为程序员不应该限制自己学习的范围,有时间多去了解后端/前端/运维也会很有利于自身开发能力的提高。