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篇左右)

相關文章
相關標籤/搜索