iOS 开发技术栈与进阶

iOS开发技术栈及相应资料总结

iOS技术栈

这里按我的理解给 iOS 相关技术分个类,以工程实现的角度,分成了基础、需求、效率、质量四个类别。基础指程序开发和 iOS 开发的基础知识和技能,需求就是产品的需求,有了基础技能,实现了产品需求后,剩下的事情就都是为了提高项目质量和提升开发效率。
大致的思维导图:

iOS 开发技术栈与进阶_第1张图片
iOS技术栈.png

基础

基础包括语言、框架、内存、网络、存储、渲染、线程。

语言目前 iOS 开发就是 OC 和 Swift,国内仍以 OC 为主,对于 OC 除了语法外,最好了解它的对象模型,动态机制等特性。Swift 方面若要在团队里使用,目前还是风险大收益小的,但个人最好保持对它的关注。

  • 语言
    • 对象模型

    • 动态机制

  • 内存
  • 网络
  • 存储
  • 渲染
  • 线程

需求

  • 普通需求
  • 特殊需求
  • 运营需求

质量

效率

进阶

在实践中学习,具体来说就是在平时开发过程中不断地发现问题 -> 解决问题

  • 发现问题
    首先你最好处在一个有很多工程上的问题急需解决的环境里,这样发现问题就很容易,最好的是处于这几类项目里:
  • 处于高速发展期的项目。增长会带来很多问题,一切又未成熟,解决这些问题是非常自然又有价值的。
  • 庞大的项目,超级APP会带来很多中小型APP没有遇到过的问题,又因为体量大,就算只有千分之一的人遇到也会影响几十万人,很有解决的价值,会有很多细致的问题。
  • 像上面提到的有“特殊需求”一类的项目,需要在一个领域里深入研究,也会自然碰到很多问题。

如果恰巧没有在这三种类型的项目里,也没关系,只要是健康发展的项目,总会存在问题和优化空间,只是要培养发现问题的意识,很多时候问题就在那里,但没人发现它,没人觉得它可以/应该解决。可以按上述列的点,在相关点上多问自己能不能提高效率和质量,例如能不能提高前后台联调效率,重复写的代码能不能自动生成,启动耗时能不能短一点,线上问题发现和排查的效率能不能提高等等。各种问题会涵盖上述提到的所有知识点。
如果不幸你的项目没有健康发展,实在没碰到什么问题或者问题不值得解决,或者你还没毕业,那这里还有一个万能问题可供参考:那些知名的开源项目具体是怎样实现的?剖析开源项目源码可以学到很多东西,各种各样的开源项目也覆盖了很多知识面,只要深入去研究它们,学习它的架构和编码,不懂的地方再去补齐知识,也是个很好的学习方式,如果学习后能输出文章效果会更好,相当于动手实践了。

  • 解决问题
    不同的解决问题的方式差别很大,有一些常见的套路可供参考:

  • 业界是怎样解决这个问题的?他们的方案有什么不足?我怎样可以做得更好?
    业界有各种各样的开源库和技术分享,只要问题不是太偏门,大多会有人已经提出解决方案,多对比和研究这些已有的方案,看它们是否能满足需求,找出它们的优点和不足,看看能不能做得比它们更好或更适合解决碰到的问题。

  • 解决方案能否通用化,封装成开源库供其他项目使用?
    开源项目都是这样来的,如果遇到一个别人没解决好的问题,别错过封装成开源库造福社会。

  • 有没有办法防止以后出现类似的问题?
    有些问题可能会反复出现,能不能防止,或者能不能在出现问题的时候能及时发现和修复,这可能涉及到开发流程、自动化和监控体系等方面的完善。

  • 总结沉淀
    能不能总结出解决这类问题的方法论(套路)?最好能输出文章或分享,写的过程是很好的学习过程,因为要把原本模糊的想法都清晰地表达出来,迫使自己去整理思路。

总结

这里按我的理解列了 iOS 相关技术点,以及在实践中提升能力的一点小建议,可能无法各方面都覆盖到,只是作为一个参考。另外这里只局限在 iOS 开发上,实际上作为程序员不应该限制自己学习的范围,有时间多去了解后端/前端/运维也会很有利于自身开发能力的提高。

你可能感兴趣的:(iOS 开发技术栈与进阶)