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

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

从事IOS开发也有几年的时间,从刚開始最主要的语言、界面、逻辑,再到后面复杂点的线程、数据处理、网络请求、动画,最后到最复杂的底层音视频、图像算法、本身定义各类效果、网络底层处理。甚至是最后的性能:neon、asm优化。git

感受本身在IOS的开发中,每次都是雾里看花,明明很是接近真理却老是触摸不到。对IOS缺少一种全局把控的感受。因此我下定决定想看看IOS的一些官方文档,看看IOS的各个模块的层次结构到底是怎么回事。github

大约从一年前開始作这件事件,我也知道这确定不是一件easy的事情。就像想作Android架构师,通读源代码同样,确定是很是辛苦。因为读研的时候作的事DSP信号处理方面的(底层驱动。算法移植)。算法

因此我在開始以前给本身打了很是多气。我想不论是IOS仍是Android都是嵌入式设备。既然曾经是作最底层的,现在看看上层应该跨度不大,呵呵。缓存

但是真正作的时候才发现。工做量真是太大了。因此最后调整了计划,仅仅对IOS中的三个最难的部分作深刻的研究。网络

固然因为时间仓促。加之本身水平有限,有认识不清或者不到位的地方,还但愿你们批评指正!架构

请勿拍砖哈呵呵!框架

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

这三个的重要性我就不说了,通常的clientAPP可能没有深刻关注这点。但仅仅要想作一些有特色、作深刻、作精致。我想这三个部分是不得不经常接触的。ide

如下这是网上的一张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篇左右)

相关文章
相关标签/搜索