一、什么是cocoa和cocoa Touchios
1、Cocoa
Cocoa是一種為Mac OS X應(yīng)用程序提供豐富用戶體驗(yàn)的框架,實(shí)際上是由3個(gè)框架組成:已知數(shù)值的Foundation框架,便于使用數(shù)據(jù)庫(kù)存儲(chǔ)和管理數(shù)據(jù)的Core Data框架,以及Application Kit(AppKit)框架。AppKit框架提供了與窗口、按鈕、列表等相關(guān)的類。使用示意圖來(lái)說(shuō)明最頂層應(yīng)用程序與底層硬件之間的各個(gè)層次。
程序與底層硬件的層次
(1)內(nèi)核以設(shè)備驅(qū)動(dòng)程序的形式提供與硬件的底層通信。它負(fù)責(zé)管理系統(tǒng)資源,包括調(diào)度需要執(zhí)行的程序、管理內(nèi)存和電源,以及執(zhí)行基本的I/O操作。
(2)核心服務(wù)提供的支持比它上面的層次更加”核心“。例如,提供對(duì)集合、網(wǎng)絡(luò)、調(diào)試、文件管理、文件夾、內(nèi)存管理、線程、時(shí)間合電源的管理。
(3)應(yīng)用服務(wù)層包含打印和圖形渲染的支持,包括Quartz、OpenGL和Quicktime。
(4)Cocoa層位于應(yīng)用程序之下。如圖所示,Cocoa包括Foundation、Core Data和AppKit框架。Foundation框架提供處理集合、字符串、內(nèi)存管理、文件系統(tǒng)、存檔等相關(guān)的類。AppKit框架提供管理視圖、窗口、文檔和使Mac OS X聞名于世的多用戶界面相關(guān)的類。
根據(jù)上面的描述,有些層的功能似乎有重復(fù)。Cocoa層和核心服務(wù)層中都存在集合。然而。后者是前者的基礎(chǔ)。此外,某些情形也可以繞過(guò)或者”橋接“到某一層。例如Foundatio中有些類,比如處理文件系統(tǒng)的那些類直接依賴核心服務(wù)層的功能,實(shí)際上繞過(guò)了應(yīng)用程序服務(wù)層。
2、Cocoa Touch
Cocoa框架應(yīng)用與Mac OS X桌面與筆記本電腦應(yīng)用程序的開(kāi)發(fā),而Cocoa Touch框架應(yīng)用與iOS設(shè)備上應(yīng)用程序的開(kāi)發(fā)。Cocoa和Cocoa Touch都有Foundation和Core Data框架,然而在Cocoa Touch下,UIKit代替了AppKit框架,提供了很多相同的類型的對(duì)象支持、比如窗口、視圖、按鈕、文本域等。另外,Cocoa Touch還提供使用陀螺儀和加速器(它與GPS和?WIFI?信號(hào)一樣都能跟蹤你的位置)的類和觸摸式界面,去掉了不需要的類。
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)化。
大部分Cocoa Touch的功能是用Objective-C實(shí)現(xiàn)的,其中,UIKit 提供了開(kāi)發(fā) iOS 上的圖形化事件驅(qū)動(dòng)程序所需的基本工具。UIKit 基于 Foundation 框架,該框架同樣存在于 Mac OS X 系統(tǒng)中,提供了文件處理、網(wǎng)絡(luò)、字符串處理以及其他基礎(chǔ)架構(gòu)。除了UIKit之外,Cocoa Touch 包含創(chuàng)建世界優(yōu)異 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ù)模型?!?/p>
Cocoa Touch框架還提供兩種內(nèi)存管理方式,一種自動(dòng)內(nèi)存計(jì)數(shù)ARC(Automatic Reference Counting ),另一種手動(dòng)引用技術(shù)(manual reference counting)。對(duì)于后一種需要程序員自己retain和release,其原則是“責(zé)任落實(shí)”,誰(shuí)創(chuàng)建了對(duì)象(或保留了以創(chuàng)建的對(duì)象),誰(shuí)就是該對(duì)象的擁有方,不再使用時(shí),則要負(fù)責(zé)釋放該所有權(quán)。
延伸閱讀:
二、 cocoa與cocoa Touch區(qū)別之分
兩者都包含OC運(yùn)行時(shí)的兩個(gè)核心框架;
cocoa包含F(xiàn)oundation和AppKit框架,可用于開(kāi)發(fā)Mac OS X系統(tǒng)的應(yīng)用程序
cocoa touch包含F(xiàn)oundation和UIKit框架,可用于開(kāi)發(fā)iPhone OS 系統(tǒng)的應(yīng)用程序;
Cocoa是Mac OS X的開(kāi)發(fā)環(huán)境,cocoa Touch是Iphone OS的開(kāi)發(fā)環(huán)境。