文档章节

iOS源码分析二十例 (0.前言)

danielwyo
 danielwyo
发布于 2017/02/10 14:13
字数 926
阅读 24
收藏 0

源码分析目的是什么

源码分析的目的并不是单纯的为了肢解代码, 这只是过程, 它的目的是为了让自己能够对代码的理解更加深刻, 培养自己的直观理解力, 增强自己的代码输出能力, 同时也增加自己对复杂代码的理解能力. 所谓的源码分析, 其实是对一个复杂的源码进行降维分析, 降到自己的能力所能理解的程度, 这样, 随着源码分析能力的增进, 个人的理解能力也会上升. 

 

源码分析到底在分析什么

  1. 代码实体细节, 对一些特定的问题, 通过分析源码, 我们进行判断这段代码具体是如何实现解决问题的方法, 对于以后来说, 我们就知道了这个知识点, 一旦遇到类似问题, 我们有对应的解决方案. 
  2. 代码抽象细节, 在知道代码的实体之后, 我们再分析代码的规范设计, 以及代码的逻辑技巧, 大约能够明白作者在这段代码中的巧妙用心, 懂得了这些技巧, 我们可以提升自己的代码能力.
  3. 代码架构体系, 代码的架构本身并不是清晰可见的, 甚至是一段代码中看不出来的, 它是我们阅读完所有代码之后, 对代码的整体有一个详细了解, 从而提取出来一套架构的描述. 对我们开发者来说, 能够获得的帮助是以后开发的时候, 可以根据需求判断, 是否可以应用或者参考此种框架. 
  4. 寻找美学体验, 在分析完成之后, 我们可以根据自己的技术能力, 对这个代码的逻辑缜密度, 代码的美观程度以及代码的体系化进行评估. 这是最抽象的一部分工作, 但是, 我认为这是最重要的一个工作, 如果仅仅提取一些知识点, 其实对个人来说, 提高的层次并不会太高, 那只是应用层的. 而我们最终是希望这些代码体验, 可以作为我们个人的直观能力进行培养的, 以后一旦碰到代码, 即可在很粗略的范围内, 大致就理解代码的各个层次. 

 

我打算怎么做

我的做法是选择大约20个iOS的开发库和开源项目, 然后按照上述的4点进行整理, 每整理出来一套思路, 就写一篇文章. 如果遇到相对比较庞大的项目, 可能分多篇进行分析. 在我的目标中, 几个比较重点要分析的库, 包括AsyncDisplayKit, RxSwift, Parse for iOS, Realm等. 这几个将会作为重点, 放在最后来讲解. 

 

先来一个开胃菜:

下一篇, 将是第一讲 -- MBProgressHud的源码分析

 

敬请期待

 

© 著作权归作者所有

共有 人打赏支持
danielwyo
粉丝 1
博文 13
码字总数 19257
作品 0
技术主管
iOS火焰动画效果、图文混排框架、StackView效果、偏好设置、底部手势等源码

iOS精选源码 高性能图文混排框架,构架顺滑的iOS应用。(http://www.code4app.com/thread-10375-1-1.html) 使用OpenGLE覆盖阿尔法通道视频动画播放器视图。(http://www.code4app.com/thread-3...

sunnyaigd
07/31
0
0
iOS基础深入补完计划--NSURLSession使用详解(附Demo)

目录 前言 API Demo 前言 本文主要是把NSURLSession以及NSURLSessionTask相关的代理方法全部整理了一下。 旨在大体了解在一个iOS网络请求中、一个任务究竟经理了什么。 而我们、又能做些什么...

kirito_song
05/10
0
0
c++0.7-----源码分析:iostate及badbit/failbit/eofbit/goodbit以及io文件的包含关系

代码取自GNU g++ 编译器携带的标准库,文件位置在E:codeblockCodeBlocksMinGWlibgccmingw325.1.0includec++bitsios_baseh 文件的关系: iostream文件: #include        #include istre...

RNG_Uzi
07/23
0
0
ios界面自动化工具--Appium

ios界面自动化工具--Appium Appium是一款开源的移动端自动化测试框架,支持Android和Ios,之前简单介绍过Appium,链接http://www.yeetrack.com/?p=639。最近在做ios的自动化测试,再详细记录一...

youthflies
2014/10/29
0
0
iOS三维菜单、调试工具、封装通讯录、网络框架、多种控件和动画等源码

iOS精选源码 一个调用系统通讯录和获取通讯录所有联系人的封装(http://www.code4app.com/thread-29726-1-1.html) ios scrollview嵌套tableview同向滑动(初级、进阶), 支持OC / Swift(http...

sunnyaigd
05/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

你为什么在Redis里读到了本应过期的数据

一个事故的故事 晚上睡的正香突然被电话吵醒,对面是开发焦急的声音:我们的程序在访问redis的时候读到了本应过期的key导致整个业务逻辑出了问题,需要马上解决。 看到这里你可能会想:这是不...

IT--小哥
今天
2
0
祝大家节日快乐,阖家幸福! centos GnuTLS 漏洞

yum update -y gnutls 修复了GnuTLS 漏洞。更新到最新 gnutls.x86_64 0:2.12.23-22.el6 版本

yizhichao
昨天
5
0
Scrapy 1.5.0之选择器

构造选择器 Scrapy选择器是通过文本(Text)或 TextResponse 对象构造的 Selector 类的实例。 它根据输入类型自动选择最佳的解析规则(XML vs HTML): >>> from scrapy.selector import Sele...

Eappo_Geng
昨天
4
0
Windows下Git多账号配置,同一电脑多个ssh-key的管理

Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有...

morpheusWB
昨天
5
0
中秋快乐!!!

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部