一、什么是cocoa和cocoa Touchios
1、Cocoa
Cocoa是一種為Mac OS X應用程序提供豐富用戶體驗的框架,實際上是由3個框架組成:已知數(shù)值的Foundation框架,便于使用數(shù)據(jù)庫存儲和管理數(shù)據(jù)的Core Data框架,以及Application Kit(AppKit)框架。AppKit框架提供了與窗口、按鈕、列表等相關的類。使用示意圖來說明最頂層應用程序與底層硬件之間的各個層次。
程序與底層硬件的層次
(1)內核以設備驅動程序的形式提供與硬件的底層通信。它負責管理系統(tǒng)資源,包括調度需要執(zhí)行的程序、管理內存和電源,以及執(zhí)行基本的I/O操作。
(2)核心服務提供的支持比它上面的層次更加”核心“。例如,提供對集合、網絡、調試、文件管理、文件夾、內存管理、線程、時間合電源的管理。
(3)應用服務層包含打印和圖形渲染的支持,包括Quartz、OpenGL和Quicktime。
(4)Cocoa層位于應用程序之下。如圖所示,Cocoa包括Foundation、Core Data和AppKit框架。Foundation框架提供處理集合、字符串、內存管理、文件系統(tǒng)、存檔等相關的類。AppKit框架提供管理視圖、窗口、文檔和使Mac OS X聞名于世的多用戶界面相關的類。
根據(jù)上面的描述,有些層的功能似乎有重復。Cocoa層和核心服務層中都存在集合。然而。后者是前者的基礎。此外,某些情形也可以繞過或者”橋接“到某一層。例如Foundatio中有些類,比如處理文件系統(tǒng)的那些類直接依賴核心服務層的功能,實際上繞過了應用程序服務層。
2、Cocoa Touch
Cocoa框架應用與Mac OS X桌面與筆記本電腦應用程序的開發(fā),而Cocoa Touch框架應用與iOS設備上應用程序的開發(fā)。Cocoa和Cocoa Touch都有Foundation和Core Data框架,然而在Cocoa Touch下,UIKit代替了AppKit框架,提供了很多相同的類型的對象支持、比如窗口、視圖、按鈕、文本域等。另外,Cocoa Touch還提供使用陀螺儀和加速器(它與GPS和?WIFI?信號一樣都能跟蹤你的位置)的類和觸摸式界面,去掉了不需要的類。
Cocoa Touch 框架推動了iOS應用開發(fā),為開發(fā)者提供了很多 Mac 平臺上久經考驗的模式,同時又特別專注于基于觸摸的開發(fā)接口和性能優(yōu)化。
大部分Cocoa Touch的功能是用Objective-C實現(xiàn)的,其中,UIKit 提供了開發(fā) iOS 上的圖形化事件驅動程序所需的基本工具。UIKit 基于 Foundation 框架,該框架同樣存在于 Mac OS X 系統(tǒng)中,提供了文件處理、網絡、字符串處理以及其他基礎架構。除了UIKit之外,Cocoa Touch 包含創(chuàng)建世界優(yōu)異 iOS 應用程序所需的所有框架,從 3D 圖形、專業(yè)音頻到網絡,甚至提供特殊設備訪問 API 以控制攝像機或從 GPS 硬件獲取位置。Cocoa Touch 既包含只需要幾行代碼就可以完成全部任務的強大的 Objective-C 框架,也在需要時提供基礎的 C 語言 API 來直接訪問系統(tǒng)。這些框架示例包括:
‘Core Animation’:通過 ‘Core Animation’,
您就可以通過基于組合獨立圖層的簡單編程模型來創(chuàng)建豐富的用戶體驗。
‘Core Audio:Core Audio’是播放、處理和錄制音頻的專業(yè)級技術,
能夠輕松為您的應用程序添加強大的音頻功能。
‘Core Data:Core Data’ 提供面向對象的數(shù)據(jù)管理解決方案,
該方案易于使用和理解,甚至可處理任何應用或大或小的數(shù)據(jù)模型。’
Cocoa Touch框架還提供兩種內存管理方式,一種自動內存計數(shù)ARC(Automatic Reference Counting ),另一種手動引用技術(manual reference counting)。對于后一種需要程序員自己retain和release,其原則是“責任落實”,誰創(chuàng)建了對象(或保留了以創(chuàng)建的對象),誰就是該對象的擁有方,不再使用時,則要負責釋放該所有權。
延伸閱讀:
二、 cocoa與cocoa Touch區(qū)別之分
兩者都包含OC運行時的兩個核心框架;
cocoa包含F(xiàn)oundation和AppKit框架,可用于開發(fā)Mac OS X系統(tǒng)的應用程序
cocoa touch包含F(xiàn)oundation和UIKit框架,可用于開發(fā)iPhone OS 系統(tǒng)的應用程序;
Cocoa是Mac OS X的開發(fā)環(huán)境,cocoa Touch是Iphone OS的開發(fā)環(huán)境。