一,Cocoa 和 Cocoa touch的區(qū)別###
Cocoa 和Cocoa touch 是RunTime的兩個(gè)核心框架:
cocoa包含Foundation和AppKit框架,可用于開(kāi)發(fā)Mac OS X系統(tǒng)的應(yīng)用程序。Cocoa是Mac OS X的開(kāi)發(fā)環(huán)境cocoa touch包含Foundation和UIKit框架,可用于開(kāi)發(fā)iPhone OS系統(tǒng)的應(yīng)用程序。cocoa Touch是iphone OS的開(kāi)發(fā)環(huán)境
二,Cocoa Touch 的概念
cocoa touch由蘋(píng)果公司提供的軟件開(kāi)發(fā) api, 用于開(kāi)發(fā) iphone\ipod\ipad上的軟件。也是蘋(píng)果公司針對(duì)iPhone應(yīng)用程序快速開(kāi)發(fā)提供的一個(gè)類庫(kù)。此庫(kù)以一系列框架庫(kù)的形式存在,支持開(kāi)發(fā)人員使用用戶界面元素構(gòu)建圖像化的 事件驅(qū)動(dòng)的應(yīng)用程序。Cocoa Touch 框架推動(dòng)了 iOS 應(yīng)用程序的開(kāi)發(fā),為開(kāi)發(fā)者提供了很多Mac平臺(tái)上久經(jīng)考驗(yàn)的模式,同時(shí)又特別專注于基于觸摸的開(kāi)發(fā)接口和性能優(yōu)化。其中,UIKit 提供了開(kāi)發(fā)iOS上的圖形化事件驅(qū)動(dòng)程序所需的基本工具。UIKit基于 Foundation 框架,該框架同樣存在于 Mac OS X 系統(tǒng)中,提供了文件處理、網(wǎng)絡(luò)、字符串處理以及其他基礎(chǔ)架構(gòu)。iOS 獨(dú)特的界面意味著 Cocoa Touch 具有同樣獨(dú)特的設(shè)計(jì)。通過(guò) UIKit,您可以訪問(wèn) iOS上特殊的 GUI 控制、按鈕和全屏幕視圖。您還可以通過(guò)加速計(jì)和 Multi-Touch 手勢(shì)控制應(yīng)用程序。
三,Cocoa Touch構(gòu)建基礎(chǔ)
大部分Cocoa Touch的功能是用 Objective-C 實(shí)現(xiàn)的。Objective-C 是一種面向?qū)ο蟮恼Z(yǔ)言,它編譯運(yùn)行的速度令人難以置信。更值得一提的是采用了真正的動(dòng)態(tài)運(yùn)行時(shí)系統(tǒng),從而增添了難能可貴的靈活性。由于 Objective-C是C的超集,因此您可以輕松地將C甚至是C++ 融入Cocoa Touch 應(yīng)用程序中。 當(dāng)應(yīng)用程序運(yùn)行時(shí),Objective-C 運(yùn)行時(shí)會(huì)根據(jù)執(zhí)行邏輯(而不僅是編譯期間定義的方式)實(shí)例化對(duì)象。例如,運(yùn)行中的 Objective-C 應(yīng)用程序可以載入界面(Interface Builder創(chuàng)建的 nib 文件),將界面中的Cocoa對(duì)象連接到應(yīng)用程序代碼,然后在按下UI按鈕后運(yùn)行正確的方法。無(wú)需進(jìn)行重新編譯。
四、Cocoa Touch框架
除 UIKit 之外,Cocoa Touch 包含創(chuàng)建世界一流iOS應(yīng)用程序所需的所有框架,從3D 圖形、專業(yè)音頻到網(wǎng)絡(luò),甚至提供特殊設(shè)備訪問(wèn) API 以控制攝像機(jī)或從GPS硬件獲取位置。Cocoa Touch 既包含只需要幾行代碼就可以完成全部任務(wù)的強(qiáng)大的Objective-C 框架,也在需要時(shí)提供基礎(chǔ)的C語(yǔ)言 API來(lái)直接訪問(wèn)系統(tǒng)。這些框架示例包括:
?Core Animation
通過(guò)Core Animation,您就可以通過(guò)基于組合獨(dú)立圖層的簡(jiǎn)單編程模型來(lái)創(chuàng)建豐富的用戶體驗(yàn)。?Core Audio
Core Audio是播放、處理和錄制音頻的專業(yè)級(jí)技術(shù),能夠輕松為您的應(yīng)用程序添加強(qiáng)大的音頻功能。?Core Data
Core Data提供面向?qū)ο蟮臄?shù)據(jù)管理解決方案,該方案易于使用和理解,甚至可處理任何應(yīng)用或大或小的數(shù)據(jù)模型
五,iphone 技術(shù)層
Cocoa Touch層由多個(gè)框架組成,他們?yōu)閼?yīng)用程序提供了核心功能。
-
UIKit負(fù)責(zé)啟動(dòng)和結(jié)束應(yīng)用程序,控制界面和多觸點(diǎn)事件 -
Map Kit提供地圖的相關(guān)服務(wù) -
Game Kit創(chuàng)建和使用網(wǎng)絡(luò)機(jī)制 -
Message UI/Adress Book UI提供操作電子郵件和聯(lián)系人的信息
六,IOS系統(tǒng)分層
一共分為四層,從上到下依次為:
- Cocoa Touch Layer(觸摸UI層)
- MediaLayer(媒體層)
- Core Services Layer(核心服務(wù)層)
- Core OS Layer(核心OS層)。
七,Cocoa framework
Cocoa本身是一個(gè)框架的集合,它包含了眾多子框架,其中最重要最基本的兩個(gè)框架是:Foundation 和 UIKit。
Foundation 是框架的基礎(chǔ),和界面無(wú)關(guān),其中包含了大量常用的API;后者是基礎(chǔ)的UI類庫(kù),以后我們?cè)趇OS開(kāi)發(fā)中會(huì)經(jīng)常用到。這兩個(gè)框架在系統(tǒng)中的位置如下圖

-
Foundation 框架
iOS程序都是由大量的對(duì)象構(gòu)成,而這些對(duì)象的根對(duì)象都是NSObject,NSObject就處在Foundation框架之中,具體的類結(jié)構(gòu)如下



將上圖Foundation框架中的類進(jìn)行邏輯分類如下:
- 值對(duì)象
- 集合
- 操作系統(tǒng)服務(wù)包括下面三個(gè):文件系統(tǒng)、URL和 進(jìn)程間通訊。 這個(gè)范疇中的大部分類代表不同的系統(tǒng)端口、套接字、和名字服務(wù)器,對(duì)實(shí)現(xiàn)底層的IPC很有用。NSPipe代表一個(gè)BSD管道,即一種進(jìn)程間的單向通訊通道。 線程和子任務(wù)。 NSThread類使您可以創(chuàng)建多線程的程序,而各種鎖(lock)類則為彼此競(jìng)爭(zhēng)的線程在訪問(wèn)進(jìn)程資源時(shí)提供各種控制機(jī)制。通過(guò)NSTask,您的程序可以分出 一個(gè)子進(jìn)程來(lái)執(zhí)行其它工作或進(jìn)行進(jìn)度監(jiān)控。
- 通知
- 歸檔和序列化
- 表達(dá)式和條件判斷
- Objective-C語(yǔ)言服務(wù)
-
UIKit 框架

在圖中可以看出,
UIResponder 類是圖中最大分支的根類,UIResponder處理響應(yīng)事件和響應(yīng)鏈,定義了界面和默認(rèn)行為。當(dāng)用戶用手指滾動(dòng)列表或者在虛擬鍵盤上輸入時(shí),UIKit就生成事件傳送給UIResponder響應(yīng)鏈,直到鏈中有對(duì)象處理這個(gè)事件。相應(yīng)的核心對(duì)象,比如:
UIApplication ,UIWindow,UIView都直接或間接的從UIResponder繼承。