iOS網(wǎng)絡(luò)編程

iOS 系統(tǒng)架構(gòu)

開始介紹iOS網(wǎng)絡(luò)編程之前介紹一下iOS 系統(tǒng)架構(gòu)。
iOS的系統(tǒng)架構(gòu)分為四個層次:核心操作系統(tǒng)層(Core OS layer)患久、核心服務(wù)層(Core Services layer)、媒體層(Media layer)和可觸摸層(Cocoa Touch layer)徒蟆。

  • 位于iOS系統(tǒng)架構(gòu)最下面的一層是核心操作系統(tǒng)層(Core OS layer),它包括內(nèi)存管理、文件系統(tǒng)、電源管理以及一些其他的操作系統(tǒng)任務(wù)配深。它可以直接和硬件設(shè)備進行交互。核心操作系統(tǒng)層包括以下這些組件:Accelerate Framework嫁盲、External Accessory Framework篓叶、Security Framework、System等幾個框架羞秤,基本都是基于c語言的接口缸托。
  • 第二層是核心服務(wù)層,我們可以通過它來訪問iOS的一些服務(wù)瘾蛋。包含:Address Book Framework俐镐、CFNetwork Framework、Core Data Framework哺哼、Core Foundation Framework佩抹、Core Location Framework、Core Media Framework取董、Core Telephony Framework棍苹、Event Kit Framework、Foundation Framework茵汰、Mobile Core Services Framework枢里、Quick Look Framework、Store Kit Framework蹂午、System Configuration Framework栏豺、Block Objects、Grand Central Dispatch 豆胸、In App Purchase冰悠、Location Services、SQLite配乱、XML Support等一些框架溉卓,也基本都是基于c語言的接口。
  • 第三層是媒體層搬泥,通過它我們可以在應(yīng)用程序中使用各種媒體文件桑寨,進行音頻與視頻的錄制,圖形的繪制忿檩,以及制作基礎(chǔ)的動畫效果尉尾。它包括以下這些組件:
    Core Audio OpenGL Audio Mixing Audio Recording Video Playback JPG,PNG燥透,TIFF PDF Quartz Core Animation OpenGL ES
  • 第四層是可觸摸層沙咏,這一層為我們的應(yīng)用程序開發(fā)提供了各種有用的框架辨图,并且大部分與用戶界面有關(guān),本質(zhì)上來說它負責用戶在iOS設(shè)備上的觸摸交互操作肢藐。它包括以下這些組件: Multi-Touch Events Core Motion Camera View Hierarchy Localization Alerts Web Views Image Picker Multi-Touch Controls.

** cocoa 很多組件都有兩種實現(xiàn)故河,一種是基于 C 的以 CF 開頭的類(CF=Core Foundation),這是比較底層的吆豹;另一種是基于 Obj-C 的以 NS 開頭的類(NS=Next Step)鱼的,這種類抽象層次更高,易于使用痘煤。**

簡單介紹下 Core Foundation 與 cocoa Foundation 區(qū)別:
** Core Foundation框架 (CoreFoundation.framework) 是一組C語言接口凑阶,它們?yōu)閕OS應(yīng)用程序提供基本數(shù)據(jù)管理和服務(wù)功能。位于第二層核心服務(wù)層**
cocoa Foundation框架位于第四層衷快。

iOS 系統(tǒng)網(wǎng)絡(luò)編程

和大多數(shù)組件一樣iOS網(wǎng)絡(luò)編程層次結(jié)構(gòu)也分為三層

  • Cocoa層:NSURL宙橱,Bonjour,Game Kit蘸拔,WebKi师郑。這層是最上層的基于 Objective-C 的 API,比如 URL訪問都伪,NSStream,Bonjour积担,GameKit等陨晶,這是大多數(shù)情況下我們常用的 API。Cocoa 層是基于 Core Foundation 實現(xiàn)的帝璧。(可觸摸層)
  • Core Foundation層:基于C的CFNetwork和CFNetServices先誉。因為直接使用 socket 需要更多的編程工作,所以蘋果對 OS 層的 socket 進行簡單的封裝以簡化編程任務(wù)的烁。該層提供了 CFNetwork 和 CFNetServices褐耳,其中 CFNetwork 又是基于 CFStream 和 CFSocket。(核心服務(wù)層)
  • OS層:基于C的BSD socket渴庆。(核心操作系統(tǒng)層)

這里我們主要介紹Core Foundation層中CFStream和位于Cocoa層的NSStream铃芦。

NSStream 其實只是用Objective-C對CFNetwork 的簡單封裝,它使用名為 NSStreamDelegate 的協(xié)議來實現(xiàn) CFNetwork 中的回調(diào)函數(shù)的作用,同樣,runloop 也與 NSStream 結(jié)合的很好襟雷。NSStream 有兩個實體類:NSInputStreamNSOutputStream刃滓,分別對應(yīng) CFNetwork 中的 CFReadStream 和 CFWriteStream。

NSStream耸弄,NSInputStream咧虎,NSOutputStream. 它們都是與流操作有關(guān)的類。NSStream是抽象類计呈,它定義了流對象的基本接口和屬性砰诵。NSInputStream和NSOutputStream是NSStream的子類征唬,它們實現(xiàn)了輸入流和輸出流的基本操作。

  • 你可以為存儲在內(nèi)存中茁彭,向文件或者C buffer寫入流數(shù)據(jù)創(chuàng)建NSOutputStream對象总寒。使用NSOutputStream可以將網(wǎng)絡(luò)請求的資源回來的數(shù)據(jù)保存到本地文件,通過輸出流對象尉间,將數(shù)據(jù)寫入到指定的文件中偿乖。
  • 可以為從NSData對象和文件中讀取的流數(shù)據(jù)創(chuàng)建NSInputStream對象哲嘲;使用NSInputStream把文件上傳到服務(wù)器贪薪。比喻說圖片保存到服務(wù)器。
  • 可以在網(wǎng)絡(luò)套接字的兩端創(chuàng)建NSInputStream和NSOutputStream對象眠副,通過流對象画切,你可以不用一次性將所有的流數(shù)據(jù)加載到內(nèi)存中。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末囱怕,一起剝皮案震驚了整個濱河市霍弹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌娃弓,老刑警劉巖典格,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異台丛,居然都是意外死亡耍缴,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門挽霉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來防嗡,“玉大人,你說我怎么就攤上這事侠坎∫铣茫” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵实胸,是天一觀的道長他嫡。 經(jīng)常有香客問我,道長庐完,這世上最難降的妖魔是什么涮瞻? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮假褪,結(jié)果婚禮上署咽,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好宁否,可當我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布窒升。 她就那樣靜靜地躺著,像睡著了一般慕匠。 火紅的嫁衣襯著肌膚如雪饱须。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天台谊,我揣著相機與錄音蓉媳,去河邊找鬼。 笑死锅铅,一個胖子當著我的面吹牛酪呻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盐须,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼玩荠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了贼邓?” 一聲冷哼從身側(cè)響起阶冈,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎塑径,沒想到半個月后女坑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡统舀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年匆骗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绑咱。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡绰筛,死狀恐怖枢泰,靈堂內(nèi)的尸體忽然破棺而出描融,到底是詐尸還是另有隱情,我是刑警寧澤衡蚂,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布窿克,位于F島的核電站,受9級特大地震影響毛甲,放射性物質(zhì)發(fā)生泄漏年叮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一玻募、第九天 我趴在偏房一處隱蔽的房頂上張望只损。 院中可真熱鬧,春花似錦、人聲如沸跃惫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爆存。三九已至蛉顽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間先较,已是汗流浹背携冤。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留闲勺,地道東北人曾棕。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像霉翔,于是被迫代替她去往敵國和親睁蕾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容