IOS架构师之路:我对IOS架构的点点认识(大纲)

原创 2015年07月10日 14:39:34

1、今天我鼓起了勇气,想纪录自己对IOS架构学习成长的点点滴滴。

从事IOS开发也有几年的时间,从刚开始最基本的语言、界面、逻辑,再到后面复杂点的线程、数据处理、网络请求、动画,最后到最复杂的底层音视频、图像算法、自定义各种效果、网络底层处理,甚至是最后的性能:neon、asm优化。感觉自己在IOS的开发中,每次都是雾里看花,明明很接近真理却总是触摸不到,对IOS缺乏一种全局把控的感觉。所以我下定决定想看看IOS的一些官方文档,看看IOS的各个模块的层次结构到底是怎么回事。

大约从一年前开始做这件事件,我也知道这肯定不是一件容易的事情。就像想做Android架构师,通读源码一样,肯定是很辛苦。因为读研的时候做的事DSP信号处理方面的(底层驱动,算法移植)。所以我在开始之前给自己打了很多气,我想无论是IOS还是Android都是嵌入式设备。既然以前是做最底层的,现在看看上层应该跨度不大,呵呵。但是真正做的时候才发现,工作量真是太大了。所以最后调整了计划,只对IOS中的三个最难的部分做深入的研究。

当然因为时间仓促,加之自己水平有限,有认识不清或者不到位的地方,还希望大家批评指正!请勿拍砖哈呵呵!

2、三个IOS专栏:音视频、图像核心动画、网络处理

这三个的重要性我就不说了,一般的客户端APP可能没有深入关注这点,但只要想做一些有特点、做深入、做精致,我想这三个部分是不得不经常接触的。

下面这是网上的一张IOS系统架构图,画的挺好的我就直接拿来了。呵呵


使用频率:

红色部分:经常使用

黄色部分:使用一般

淡绿部分:偶尔使用

绿色部分:极少使用

但我想从掌握的难易程度,以及使用这些这些技术的重要性来划分。所以我重点关注了粉红色方框中的内容。

3 IOS:Audio&Video&FFmpeg

先来看看几个结构图:多媒体层结构图:

音频处理结构图:


越往上层,功能封装越单一,同时可以我们自己定制的功能就越少。比如在AudioUnit我们可以控制硬件Buffer大小,可以将解码之后的音频数据:变声、混频、加密、波形展示,做各种我们想要的效果,但最上层就没有这些丰富的API。

每个部分的详细功能及使用会在博客中专门的介绍,这里就不啰嗦了。

       另外我准备吧FFmpeg解码也放到这个部分。初步想法是这样的:

IOS原生API:

3.1 AVFoundation自定义音视频频播放

3.2 OpenAl播放3D音效

3.3 Audio Queue音频队列原理解析

3.4 AudioUnit的理解与使用

3.5 Camera 从录制到播放流程解析

IOS 流媒体 软编解码及常用技术:

3.6 Mpeg-4|AAC 视频播放器

3.7 FFmpeg 解析for IOS(可能2-4篇)

3.8 RTSP流媒体与HLS流媒体 for IOS


3.9 图片合成视频,音频混频原理分析

3.10 实时滤镜特效处理

IOS硬编解码:

3.11 WAV|Mp4 文件格式解析

3.12 H264 解码基本原理及对IOS的支持

3.13 浅谈IOS硬编硬解

可能还不是很全面,待我整理下资料再继续添加。

4 Image&Animation

图片动画处理部分:

QuartzCore.framework : 主要包括Core Animation 核心动画、CALayer也是这个框架下面的。

CoreGraphsic.framework:主要包括CGContext类、Quartz2d是一个绘图引擎,由CoreGraphsic提供一组API。

OPENGLES:这个即使一个framework也是3D绘制引擎的名字。主要用于3D绘图。以及高效的纹理贴图。

CoreImage:里面提供了丰富的图像处理、滤镜库。同时还有GPU加速功能。

这个环节我想从以下几个部分阐述:

4.1 QuartzCore 介绍各种炫酷动画:如PNChart图表重构github(可能要4-5篇)

4.2 Quartz2d绘图引擎的使用

4.3 OpenGLES 绘图引擎的使用

4.4 IOS原生滤镜库介绍

4.5 armv7 内核(寄存器使用)

4.6 Neon、ASM(汇编优化)

5 NetWork

IOS的网络层次结构主要分为以下三个部分:

Cocoa层:NSURL(比较常用的)、NSStream、GameKit、WebKit、ASIHttpRequest(第三方框架)

Core Foundation:CFNetwork/CFNetServices、CFStream、CFSocket

OS:BSD Socket

这部分如下布置:

 5.1 Socket(从OS层到Cocoa层)不同情况下Socket的理解(预计4篇)

5.2 利用Socket实现Http协议(预计5篇左右)

5.3 IOS对代理、离线缓存、CDN加速的理解(预计6篇左右)

       


我眼中的架构师:一个优秀的架构师应该具备什么?

时光退回到七八年以前,那个时候“架构师“还是一个很“高大上“的title。可是在今天的互联网圈,随便一个工作了三、五年的开发人员,都可以称之为架构师。随便多翻几个招聘网站,你可以看到:前端架构师、后端...
  • chunlongyu
  • chunlongyu
  • 2016年12月04日 20:11
  • 2564

架构师之路:一个架构师需要掌握的知识技能

Java团长 2017-04-15 21:30 没有设计的思想,你就不能成为一名架构师。架构师是一个能撸的了一手好代码,画的了一个漂亮的UML/原型,写的了一篇技术文档,更加能解决好项目...
  • u013322876
  • u013322876
  • 2017年04月21日 21:07
  • 1360

iOS架构师之路:慎用继承

最近在看大神Casa的文章《跳出面向对象思想(一) 继承》,脑洞大开。文章给我们展示了一个随着产品需求不断变化的例子,该例子中通过继承实现不同页面的搜索视图和搜索逻辑的代码复用,随着产品需求的演变,最...
  • hxpp777
  • hxpp777
  • 2016年09月11日 10:42
  • 149

iOS架构师之路:慎用继承

最近在看大神Casa的文章《跳出面向对象思想(一) 继承》,脑洞大开。文章给我们展示了一个随着产品需求不断变化的例子,该例子中通过继承实现不同页面的搜索视图和搜索逻辑的代码复用,随着产品需求的演变,最...
  • three_bird
  • three_bird
  • 2016年05月28日 15:37
  • 1466

iOS架构师之路:制定代码规范

先吹个牛,我打心眼自认为自己是喜欢对团队项目的代码质量负责的人,对于思考如何写出高质量可读性的代码我是乐此不彼。之前我写过两篇关于代码命名规范和代码编写规范的文章,《iOS架构师之路:iOS开发(OC...
  • touch929
  • touch929
  • 2017年06月07日 09:19
  • 859

iOS架构师之路:慎用继承

最近在看大神Casa的文章《跳出面向对象思想(一) 继承》,脑洞大开。文章给我们展示了一个随着产品需求不断变化的例子,该例子中通过继承实现不同页面的搜索视图和搜索逻辑的代码复用,随着产品需求的演变,最...
  • u011363981
  • u011363981
  • 2017年03月13日 18:19
  • 464

java架构师之路:JAVA程序员必看的15本书的电子版 一

  • 2013年02月18日 11:28
  • 42.79MB
  • 下载

java架构师之路part4_part5(打包书籍,辛苦搜集)

  • 2015年12月06日 11:58
  • 57.95MB
  • 下载

架构师之路六本电子书汇总

  • 2017年12月22日 16:09
  • 86.19MB
  • 下载

架构师之路不读系列

  • 2017年11月17日 16:46
  • 10KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS架构师之路:我对IOS架构的点点认识(大纲)
举报原因:
原因补充:

(最多只允许输入30个字)