【技术创作101训练营】如何从Objective-C转向Swift开发

如何从Objective-C 转向Swift开发.pptx

如何从Objective-C转向Swift开发

自我介绍

大家好,我是筑梦师Winston,是一名iOS开发者,我已经从事iOS开发将近五年了。

但是说来也很奇怪,我入行以前,对安卓蛮感兴趣的,大学的时候在宿舍自己喜欢鼓捣安卓手机,那时候还是Android 2.3时代,我的手机挺卡的,就希望通过刷机来提升手机的流畅度,从一开始的小白一键刷机,到后面自己写刷机包,后面Android 4.0手机出了,又去尝试适配基带,最终以两个手机再也无法使用而收场。

毕业的时候对开发语言没有概念,只知道一个Java,但即便有着这样的铺垫,我也没有去学习Java语言,而是从Objective-C入手,那时候还是Xcode 5的时代,我从第一款应用开始做起,学习完以后才发现,原来我做不了游戏,那时候特别喜欢一款游戏,《愤怒的小鸟》,当时很想做游戏,但是大家也都知道穷养儿,毕业就等于断粮,所以要暂搁做游戏的想法,先管住温饱。

技术环境(转向Swift开发的必要性)

随着互联网的快速发展,我已经不是当年的小白了,但你们也都知道,程序员这行,想要吃饱饭就要不断地学习,不然就会随着技术的迭代而被淘汰。

2020年发生一件很大的事情,是什么?(尝试互动)对,是疫情,疫情影响很多中小型公司和实体业,导致了一瞬间再就业的要求大大提高。

Objective-C语言的痛点

这门语言是C的超集,缺点随着时代的变迁和技术的迭代,显得越来越臃肿,难学,包括iOS这行,已经越来越少的新人加入这行,反倒是H5和Java两行的新人越来越多。这就会使得,在整个市面上会OC的程序员,都将是拥有丰富经验,至少3年-5年的,这样你的竞争压力其实蛮大的。

不知道大家是怎么看的,Objective-C这门语言虽然难学,但我是非常感激自己能够学会这门语言,它不仅能让我吃饱饭,还能让我从中理解到了,什么是开发语言,摊开来讲,如果你学的一门语言,在就业的优势并不大时,它会促进你快速的去学习新的语言,而不是原地踏步,坐吃山空。

iOS开发就业趋势

每年毕业的本科生和研究生越来越多,他们往往在学校会学习一些C、C++、C#这种语言,然后去大厂实习时,由公司安排岗位,如果现在被安排到iOS岗位中,一般都会让实习生去推进Swift的项目,Swift的项目周期短,落地快,而且简单易用,如果让实习生去学习OC,维护臃肿的OC项目,往往还没有熟悉,人家就已经离职了。

小故事(佐证Swift是刚需)

我曾经去过北京,想在那里找一份不错的工作,那时候我做了差不多三年iOS开发,期间又自学了前端和后端,因为想做一个自己的个人主页,所以捣鼓了很多东西,服务器啊域名啊数据库和后台搭建等等,以为自己算是比较有竞争力的iOS开发吧。

于是在北京面了大大小小十几家,其中有家让我印象深刻,我从笔试到面试一路过关斩将,总共有三个面试官,面试官问了一些OC上的问题,由浅及深,我都一一解答出来,然后看到了我简历上有写到我会前端,他们私下讨论了下,然后征求我的意见,可以不可以找个前端开发来面试一下我,简单的问几个问题,我说可以,然后前端问了我几个问题,我都悉数答了上来,此时面试大概已经过了近3个小时,面试官说要去给老大汇报一下情况,当我觉得我稳操胜券的时候。面试官过来又问我:请问你会Swift吗,我说我还没有进行这方面的学习,因为那时候可能才是Swift 2和3,听说ABI不稳定我就没有急切的进行学习,于是,在这场我觉得我发挥非常稳定的面试中,因为不会Swift语言而被淘汰。

有些人说,这可能就是个借口,什么现在接的需求都是Swift的项目,但其实即便你表达出来,你可以在短时间内学习这门语言并上手,对方也会因为工期紧,将你拒之门外。所以还是要不断的增强自己的实力

Swift的语言特性

去年Swift 5已经宣布ABI稳定,这就意味着Swift将不会再有更大的变动,Swift的社区也逐渐庞大起来,越来越多的大牛加入到Swift语言以及框架的开发中来。Swift继承了Python、JavaScript的优点,不仅可以面向对象编程,而且可以轻松的实现函数式编程、面向协议编程,在OC同样也可以实现,只是需要借助框架,有些复杂。

上手快、简单易用、提高市场竞争力这三个鲜明的特点,而且从Objective-C转向Swift,往往要比从别的语言转快的多。

如何学习一门新的语言

基础数据类型-基础语法(逻辑或与非、for循环、while循环)-正则-位运算

一门语言要怎么样学习呢,其实这么多年开发下来,大家应该都知道,每一门开发语言,其实本质就是工具而已,这些工具的特点也都大相径庭,首先你要从基础数据类型开始、然后就是基础语法、逻辑或与非、for循环、while循环,正则、位运算你会发现每门语言都有这些。

高级语法糖-系统API-执行顺序-底层原理-数据结构

当你学会了基础语法的调用后,就要开始学习一些语法糖和系统API的调用,将他们一一的组合起来,按照执行顺序,每个语言的执行顺序和入口都是不同的,存储逻辑也是不一样的。

如果你只是想抓紧时间上手并投入到业务的使用当中,那么你是不用过早的进行底层原理和数据结构的研究,

当你已经拥有足够的项目经验或者能够灵活运用这门语言,通俗点讲,不用费什么力气就能吃饱饭,这时候就可以抽时间研究下底层的原理和数据结构,有助于提升你对开发语言的理解和市场竞争力。

从阅读翻译开始

怎么样快速的提高自己的能力呢,从阅读和翻译开始,市面上有很多成熟的框架和项目,对着进行翻译,是最快提升能力的方式,在翻译的同时,可以学到对方(大佬)的项目结构、代码逻辑、代码思维、代码规范。

这玩意就跟做题一样,当你高考前的一百天,你都在做什么,做题,当你做的多看的多了,自然而然就会了,你也可以称之为肌肉记忆,每个人的学习速度和方法都是与众不同的,因人而异。

如何在工作中更好的应用

试着用新语言解决需求

当你工作几年以后,你会发现你学习一门语言其实很容易,但同样的,你忘记它也很容易,因为你没有用武之地。

就好比你学了很多武功,但是没有人跟你打架,这是一个和平的年代,久而久之,你也会武功全废。

那么怎么样才能更好的应用到工作中去呢,首先你要建立起你工作与你新学的语言之间的联系,比如我会将一个新的需求用H5去解决,这样我就不会对H5过于生疏,偶尔还会用用它,调用其中的API。同时在使用其他语言的过程中,我也会遇到不同样的问题,例如坑啊什么的,这时候我很享受解决问题的过程。当你以后面试的时候,恰巧你解决了这个问题,就不会说出“隐约”“大概”“好像”开头的描述句。而是“我在做XX需求的时候,遇到过这个问题,我是怎么样解决它的”,杜绝纸上谈兵的情况出现。

试着用更高级的项目架构进行重构

OC老项目的结构和目录势必是臃肿的,为何不用我们新学的Swift重构一遍呢,不仅能够快速提高Swift的代码书写能力,还能够完成我们工作的KPI。

Swift能给我们带来什么好处

对开发语言的新认识

当你掌握一门以上的开发语言以后,你会发现,你对整个世界的看法都会有所改变,从最基本的业务逻辑,到事业观、爱情观,再到大的世界观、人生观、价值观,都会有所改变。为什么呢?

你不会被现有的社会环境、工作环境而固化你的思维,不会把语言限制到自己身上,每门开发语言都是相通的,不会再有刚学开发时,我这个开发语言比另外那个语言高效,我这个语言又比哪个语言好用,而是转变成了,这个问题,可以用这个语言进行解决更高效,两门语言结合起来更省空间和时间。

自我能力整体提升(学习能力和业务能力)

再有一个就是整体能力的提升,不仅自己做业务的能力范围提升,可以是自己达到一个人撑起一个业务流程。

学习能力也会大大提升,大家都知道,也都深有体会自己刚入门的时候,想理解面向对象的概念是有多困难,但现在回想起来,对象是个什么东西,这个感觉很奇妙,还有一个更奇妙的感觉就是当你再学一门新语言,它这个感觉就像是解锁地图一样,让你整个人都觉得活得明白了起来。

结束语

好的,谢谢大家,这就是我要给大家讲的《如何从Objective-C转向Swift开发》