不知不觉工作已有三个年头,在iOS这条路上,从当年战战兢兢的新人变成一个熟练的开发者,这一路走来真不容易。不仅仅是身体上的负荷,个人对于技术的追求也使自己或迷惘或奋起。

工作

前两年基本上都在加班赶业务做是某块业务,对于一款App从无到有如何架构的没有系统的考虑过。今年在公司的这款Wecycle视频社交App上,团队内从开发语言、设计模式、缓存策略、网络层设计、组件化方案等几个维度来架构这款App。因为前期产品架构的好,后面产品迭代大家都做的比较轻松。就像一幢大厦有了整体的框架,需要什么就往里面塞就行,定期修正下,时间久了,也不用担心楼歪了。

今年App做了不少,除了刚才说的还有Snapvote,一款投票App;VISO,一款视频和滤镜编辑的App。 Wecycle是Object-C和Swift混编的工程,在这期间算是入门了苹果爸爸的新开发语言,Swfit所倡导的面相协议编程让开发人员的脑洞可以开的更大了,通过协议抽象各种应用场景着实让人兴奋了一把,在Swfit2.0之后protocolextension支持默认实现,为协议插上了翅膀。感兴趣的同学不妨看看APIKit这个Swift库,它通过POP的方式在网络请求和模型解析之间给出了一个很棒的解决方案,在此不展开了。Swift的解包、写时复制、大量的值类型的使用使得我们的代码比OC时代写起来更安全。

Snapvote是一款简单的投票类工具App,没有用户系统,可以说是比较简单的了,所以考虑用跨平台的框架ReactNative开发,顺便练练手。一次使用两个工具(Xcode、React Native Debuger)同时调试,那叫酸爽,两个显示器都不够用。扒拉扒拉ReactNative的OC实现,Runtime、消息转发、RunLoop、多线程、线程锁一大堆的知识点,让人受益匪浅;同时又稍微学了点javascript。关于ReactNative的相关体验自己写了一个系列共四篇文章,从安装到原理的讨论,算是有个交代吧。

VISO视频图片编辑的App和VISCO很像,有兴趣的同学可以体验下,期待你们的意见😄。经历了OC和Swift混编的痛苦,本来想使用纯Swift开发,但是受限于公司内部某些视频编辑库是OC写的一时半会儿没发改过来,只能写回OC了。通过这款App的开发让我对音视频的处理有了一个全面的了解。前两年一直忙于业务没有深挖OC的底层,今年花了很多时间在这上面,不仅对Runtime、RunLoop、线程、线程锁有了更深入的理解,还花时间把C又拉出来练了练。用C写了个App上的Socket服务(Ps:因为期间一直在看网络方面的书籍《图解HTTP》《TCP/IP详解》,写的时候少走了点弯路,果然是书到用时方恨少),通过浏览器访问App的某个端口实时的查看埋点数据,方便了QA的测试。

行业

因为市场上的培训班不断的输出iOS开发者,iOS市场基本饱和,工作也不是三年前随随便便的就能找到,对技术人员的基本素养要求更高,市场正在慢慢回归到良性,挺好。 今年Javascript、Python、Java大行其道,但还是相信苹果爸爸。在OC这门语言上我会继续深入,它是一门动态的语言有很多有趣的技术是那些在编译期就决定怎么跑的语言所不具备的。学习并吸收它,让自己更透彻的了解一门语言的底层机制。对一个几年的开发人员来说,如果一门语言都不能理解的比较透彻,那是可悲的。花更多的时间熟悉Swift,今后让自己的技术能够平稳的过渡。

“在我们这个地方,你必须不停地奔跑,才能留在原地。” —— 《爱丽丝漫游奇境》● 红桃皇后

生活

今年自己的个人生活出现了些状况,多的也不说了大家都懂。这次经历让我意识到即使是两个人已经在一起了,也不要丢失掉原来的自己,不要忘记对方是因为原来的你才想和你在一起。如果你变了,她也变了。控制自己,时刻保持优秀。无论是工作还是生活,活的精致点。

2017书单

  • 《图解HTTP》

    图文并茂,叙述生动。适合新手,让读者对HTTP很快形成一个整体的概念,明白为何这样设计。

  • 《Linux Shell脚本》

    当作参考书需要的时候翻翻

  • 《Object-C高级编程(iOS和OSX多线程和内存管理)》

    Autorelease、属性修饰符、block、GCD都有比较深入的理解,都是干货,适合反复阅读。

  • 《Head First HTML》

    入门推荐

  • 《程序员的自我修养》

    好书,对编译和连接有比较深入的描述,是个大菠萝,得慢慢啃。

  • 《深入理解计算机系统》

    好书,操作系统必读书籍,又是个大菠萝。