文档章节

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

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

源码分析目的是什么

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

 

源码分析到底在分析什么

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

 

我打算怎么做

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

 

先来一个开胃菜:

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

 

敬请期待

 

© 著作权归作者所有

共有 人打赏支持
danielwyo
粉丝 1
博文 13
码字总数 19257
作品 0
技术主管
私信 提问
iOS个人中心渐变动画、微信对话框、标签选择器、自定义导航栏、短信验证输入框等源码

iOS精选源码 简单的个人中心页面-自定义导航栏并予以渐变动画(http://www.code4app.com/thread-10860-1-1.html) 程序员取悦女票的正确姿势---Tip1(iOS美容篇)(http://www.code4app.com/th...

Android爱开源
01/16
0
0
ReactNative与iOS原生交互方式汇总

前言 最近用RN开发SDK,涉及RN与iOS各种交互。 有些交互比如用iOS原生切换多个RN页面,以及iOS调用RN的方法,按照网上的方法调不通,一度不知如何是好,网上资料比较少。 于是自己看RN源码分...

大灰狼的小绵羊哥哥
2018/11/13
0
0
iOS火焰动画效果、图文混排框架、StackView效果、偏好设置、底部手势等源码

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

sunnyaigd
2018/07/31
0
0
iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码

iOS精选源码 iOS高仿微信完整项目源码(http://www.code4app.com/thread-14695-1-1.html) Khala: Swift 编写的iOS/macOS 路由框架(http://www.code4app.com/thread-31586-1-1.html) 微信左滑删......

Android爱开源
01/03
0
0
iOS分段选择器、旅行App、标度尺、对对碰小游戏、自定义相册等源码

iOS精选源码 企业级开源项目,模仿艺龙旅行App(http://www.code4app.com/thread-14774-1-1.html) 标签选择器--LeeTagView(http://www.code4app.com/thread-31514-1-1.html) CSSegmentedCont......

Android爱开源
2018/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
10
1
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
4
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
5
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
5
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部