边开发边学习ios开发iOS 深度好文

2019年终总结:我的iOS进阶之路

2020-01-04  本文已影响0人  某非著名程序员

回望过去一年,时间很快。我走出了一条新的道路,同时也走出了曾今的我无法企及的高度。

1.设计模式

设计模式初看时,晦涩难懂。
但随着在项目中的实践及反复琢磨,无论从思想上还是代码质量上都有一个质的飞越。书中的例子只是引子,伴随着在项目的应用,会理解的更加透彻。
iOS责任链设计模式实现逐个弹窗
iOS 面向接口编程,代理和通知实现
iOS 模板模式封装shell 解压、拷贝、删除命令
OC 实现状态模式
iOS 备忘录模式实现编辑框回退功能

2.重构改善既有的代码设计

重构:函数、类名命名的重要性,清晰的命名无疑能更好的增加代码的可读性,同时符合单一职责原则。
这也是一剂良药,书只看了两三遍,但思想却一直伴随着。我的笔记,随着实践,你会更加知道这本书的重要性。
团队中人员能力参差不齐:如何保证代码的质量?靠一些简短的规范,治标不治本。
我的回答是:提高个人能力;能嗅出好代码与坏代码的味道,对设计模式和代码质量有好的认识。而“重构”这本书无疑是最好的答案。

3.以上的两种结合

有清晰的命名,职责分工明确,符合单一职责原则,加上适当的运用设计模式,让代码质量也能上一个层次。
同时设计模式是代码封装的基石,让你的思路更开阔。

4.敏捷软件开发

这本书我没有掌握到精髓,但令我意识到的是单元测试的重要性。书中的“薪水支付案例”伴有大量的单元测试,并应用大量设计模式。教科书般的存在。在自己的日常开发中,如果在重要逻辑,加上单元测试,无疑再次提升代码的质量。

5.逆向

逆向是通往另一条世界的大门,由于iOS本身知识的庞大体系尚未掌握,程度仅入门而已,如去除优酷广告,修改微信余额(仅限本地)。
iOS逆向实战一:实现按下home键截屏,如何使用hook的对象属性
iOS逆向实战二:微信聊天界面实现飘气球效果
iOS逆向实战三:修改微信钱包零钱
iOS逆向实战四:去优酷广告

6.OC的三部曲

第一部:Objective-C高级编程+iOS与OS+X多线程和内存管理,这本书总共也就三章,书不好懂,但涉及内容也是进阶必备知识之一,其中的block的原理透彻见底。
第二部:CoreAnimation,这本书讲了很多动画的原理,包括后面几章的性能的优化,受益匪浅。
第三部:Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法,有了“重构”的铺垫,这本书显得没有多大的感觉,只有一些小细节,可以略微注意下。

7.戴铭的高手课

腾讯的大佬在极客上写的文章,非常有深度。看第一遍时,晦涩难懂,有种内力不够而强行修炼的高深绝世武功。
例如第二章讲的启动优化,如何hook objc_msgSend方法。要看懂这篇文章,至少需要准备的知识:汇编入门,Mach-O的深入理解,fishhook的原理。而这其中随便一个知识点,却不是三两日就能理解的。
看懂都是问题,而大佬却能写出,可见差距的明显。

8.iOS 系统源码及第三方源码总结

难得的苹果会开源系统的部分源码,这是知识的宝库,同时也是加深理解系统特性的好机会,不可错过。

8.1 Block源码阅读

必读的原因:日常使用非常广泛而且容易造成内存泄露,了解根源才能更好的解决问题。

8.2 RuntTme源码

简单列下runtime有哪些需要掌握的原理:
1.runtime的前身 Mach-O文件的结构,这一步对runtime启动时是如何加载及加载的顺序的理解有很大的帮助
2.runtime启动时的加载,如何从Mach-O文件中加载的,类和分类是如何加载的,加载的顺序那个在前那个在后。+load中的方法加载。
3.内存管理:如小对象类型怎么管理,开启ISA优化又是怎么管理,弱引用与引用计数怎么管理的?SideTables结构了解下。
4.weak原理
5.category原理
6.关联对象原理
7.objc_msgsend原理,消息查找原理,消息转发,动态方法解析。趴趴源码,也许有不一样的收货。
8.如果可以,汇编也可以了解下。objc_msgsend就是用汇编实现的,看到现在,也没全明白。
runtime源码易读的原因在于可以调试,我的git runtime已经有大量注释,如果有想深入理解的,可下载后自行保留并添加注释。

8.3 CFRunloop源码

9.第三方源码阅读

如果没有阅读第三方的习惯,可以先从一些常用的、经典的第三方开始阅读。这是一个持久的过程,需要坚持。
推荐阅读:SDWebImage、Masonry、YYCache、AFNetWorking、FDTemplateLayoutCell(高度缓存框架)等。
Masonry的链式封装可以说是相当经典,如果你对链式理解的更透彻,在UIView的使用,富文本等等需要的地方都可以使用链式封装。已经封装组件iOS 链式组件库封装,有兴趣可以看看。
iOS UITableView+FDTemplateLayoutCell高度缓存框架源码解读
iOS YYText之YYLabel源码阅读(一)
iOS Masonry源码分析
iOS 使用SDWebImage加载多图大图时退出页面或退到后台时需要手动清理内存吗?

10. 组件库封装

  1. iOS 链式组件库封装
  2. MarkDown解析
  3. WPBaseTableView
  4. WPInputBackout:为UITextView增加撤销功能

总结:

  1. 现在使用一个第三方框架,总喜欢先看下源码,了解原理才能更好的解决问题。
  2. 小细节:对于源码阅读,建议早上进行,每天早起一小时,早上心静如水,适合源码阅读。
  3. 一切理论只是为了实践准备,为什么读书十年,亦是如此。而这些理论已经为我解决了很多实际问题。
  4. 2019年给了一份满意的答案,道路已经铺平;2020保持前行。
上一篇下一篇

猜你喜欢

热点阅读