| 
                           
                            | 
								
										
                                    | 编辑推荐: |  
										
                                    | 本文来自于lcchuguo,本文通过几个结构图简单的介绍了IOS体统架构。 |  |  1、今天我鼓起了勇气,想纪录自己对IOS架构学习成长的点点滴滴。 从事IOS开发也有几年的时间,从刚開始最主要的语言、界面、逻辑,再到后面复杂点的线程、数据处理、网络请求、动画,最后到最复杂的底层音视频、图像算法、自己定义各种效果、网络底层处理。甚至是最后的性能:neon、asm优化。 感觉自己在IOS的开发中,每次都是雾里看花,明明非常接近真理却总是触摸不到。对IOS缺乏一种全局把控的感觉。所以我下定决定想看看IOS的一些官方文档,看看IOS的各个模块的层次结构究竟是怎么回事。 大约从一年前開始做这件事件,我也知道这肯定不是一件easy的事情。就像想做Android架构师,通读源代码一样,肯定是非常辛苦。由于读研的时候做的事DSP信号处理方面的(底层驱动。算法移植)。 所以我在開始之前给自己打了非常多气。我想不管是IOS还是Android都是嵌入式设备。既然曾经是做最底层的,如今看看上层应该跨度不大,呵呵。 可是真正做的时候才发现。工作量真是太大了。所以最后调整了计划,仅仅对IOS中的三个最难的部分做深入的研究。 2、三个IOS专栏:音视频、图像核心动画、网络处理 这三个的重要性我就不说了,一般的clientAPP可能没有深入关注这点。但仅仅要想做一些有特点、做深入、做精致。我想这三个部分是不得不常常接触的。 以下这是网上的一张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   |