中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
Cocoa是什么???

Cocoa是什么???

作者:wangzz


某次上班路上,同事問我:什么是Cocoa?當(dāng)時楞了一下,對呀,什么是Cocoa?做了將近一年的iPhone應(yīng)用開發(fā),成天跟它打交道,竟然還不知道這是個什么東西。。。

一、什么是Cocoa

①Cocoa的來源

早些年,蘋果公司啟動了Copland計劃,致力于開發(fā)出自己的操作系統(tǒng),可惜后來Copland計劃逐漸的失控了,蘋果公司最終決定放棄開發(fā),轉(zhuǎn)向從別的公司購買下 一個版本的Mac OS。在經(jīng)過調(diào)查現(xiàn)存的操作系統(tǒng)之后,蘋果公司選擇了NextSTEP,因為NeXTSTEP很小,蘋果1996年收購了Next整個公司。關(guān)于Next公司以及這段歷史,對喬幫主感興趣的同學(xué)可以google一下。

NeXTSTEP內(nèi)置許多庫和工具,能讓程序員以一種優(yōu)雅的方式與窗口管理器進(jìn)行交互,這些庫叫做Framework,在1993年這些frameworks和工具被重新修改并重命名OpenStep,后來被重命名為Cocoa,大家應(yīng)該知道為什么Cocoa的類都有著NS的前綴了吧。

②什么是Cocoa

實時上,Cocoa(IOS上的叫Cocoa Touch)是一個面向?qū)ο蟮能浖M件—---類的集成套件,它使開發(fā)者可以快速創(chuàng)建強(qiáng)壯和全功能的 Mac OS X (IOS)應(yīng)用程序。

Cocoa包含了很多框架,其中最最核心的有兩個:
(1)Foundation框架;

Foundation框架包含所有和界面顯示無關(guān)的類。
(2)Application Kit(AppKit)框架(Cocoa Touch中叫UIKit框架)。

Application Kit 框架包含實現(xiàn)圖形的、事件驅(qū)動的用戶界面需要的所有對象:窗口、對話框、按鍵、菜單、 滾動條、文本輸入框----這個列表還在不斷增加。

Foundation 和 Application Kit (UIKit)框架在 Cocoa 開發(fā)中是必要的,其它框架則是輔助和可選的(我們也可以只用 Foundation 框架創(chuàng)建一個 Cocoa 程序,而不涉及其它框架,比如令行工具和 Internet 服務(wù)器就是這樣的例子)。和所有框架一樣,這兩個框架不僅包含動態(tài)共享庫(有時是幾個兼容版本的庫),還包含頭文件、API文檔、和相關(guān)的資源。

除了這兩個最核心的,Cocoa(Cocoa Touch)還有很多其他的框架,蘋果和第三方廠商也隨時會發(fā)布更多的框架,比如Cocoa Touch的Address Book UI框架(AddressBookUI.framework)、Game Kit框架(GameKit.framework)等等,我們在開發(fā)Cocoa程序的時候可以按照自己的實際需求添加這些框架。

二、Cocoa在Mac OS X中的位置

①Cocoa在整個Mac OS X架構(gòu)中的位置


從這幅圖中可以看出:

(1)還有兩個和Cocoa級別相同的開發(fā)框架:Carbon,JDK。
(2)Cocoa位于整個架構(gòu)的頂端,其下還依賴很多別的框架。

雖然 Cocoa 依賴于特定的框架,但它并不是僅僅“坐”在這些框架的上面。在某些情況下,Cocoa 和其它框架(比如 Carbon)是對等的,甚至可以實現(xiàn)一些其它對等框架不能實現(xiàn)的任務(wù)。Cocoa 不僅僅是基礎(chǔ)技術(shù)上面的一個面向?qū)ο蟮姆庋b層

②另一種層級劃分方式


上面這個圖把Mac OS X的架構(gòu)分了四個部分:
(1)User Experience,這個一般可以理解為Application.
(2)Application Frameworks,這個理解為主要包括像Cocoa這樣的組件。
(3)Graphics and Media,這個理解為Application service和Core Service。
(4)Darwin,這個就是Mac OS X的kernel。

③Cocoa和其它架構(gòu)的依賴關(guān)系


Cocoa 依賴的、或者通過類和方法為之提供訪問通道的主要基礎(chǔ)框架有 Core Foundation,Carbon,Core Graphics (Quartz),Launch Services,和 Print Core (打印子系統(tǒng))。詳細(xì)信息如下:


(1)Core Foundation

Foundation 框架的很多類都基于 Core Foundation 中對應(yīng)的封裝類型。它們 之間的這種緊密關(guān)系使“免費(fèi)橋接”技術(shù)—即在兼容的Core Foundation和Foundation類型之間實現(xiàn)類型轉(zhuǎn)換—成為可能。某些 Core Foundation 的實現(xiàn)又基于 Darwin 層的 BSD 部分。

(2)Carbon

Cocoa 使用了 Carbon 提供的某些服務(wù),因為有些 Carbon 框架在 Core Services 和 Application Services 層中定位為系統(tǒng)級別的服務(wù)。作為例子,Carbon Core 就是這些框架中特別重 要的一個,Cocoa 使用了它提供的 File Manager(文件管理器)組件來進(jìn)行不同文件系統(tǒng)表示之間的轉(zhuǎn)換。

(3)Core Graphics

Cocoa 描畫和圖像處理類(相當(dāng)自然且緊密地)基于 Core Graphics 框架,它實現(xiàn)了 Quartz 和窗口服務(wù)器組件。
Launch Services。NSWorkspace 類負(fù)責(zé)向外提供 Launch Services 的潛在能力。Cocoa 還使用 Launch Services 提供的應(yīng)用程序注冊功能來獲取與應(yīng)用程序及文檔相關(guān)聯(lián)的圖標(biāo)。

(4)Print Core

Cocoa 的打印類是打印子系統(tǒng)的一個面向?qū)ο蟮慕涌凇?/p>

此外,Cocoa 還使用 Carbon 環(huán)境的 Text Encoding Converter(文本編碼轉(zhuǎn)換器)服務(wù)來處理一些字符串編碼轉(zhuǎn)換。還有一些 Cocoa 方法向外提供 I/O Kit 框架、QuickDraw (QD)框架、 Apple Event (AE)框架、 和 ATS 框架的部分功能,分別用于進(jìn)行電源管理、QuickDraw 描畫、 Apple Event 處理、以及提供字體 支持。

三、Cocoa程序只能通過Objective-C語言編寫嗎

當(dāng)然不是了。

在開發(fā) Cocoa 軟件的時候,我們可以使用多種編程語言?;镜?,也是官方推薦的語言是 Objective-C。Objective-C 擁有自己 的 Cocoa 運(yùn)行環(huán)境,又是 ANSI C 的超集,它在 ANSI C 的語法和語義特性上(從 Smalltalk 派生而來)進(jìn)行擴(kuò)展,使之支持面向?qū)ο蟮木幊?,新增的?guī)則簡單而又易于學(xué)習(xí)和使用。由于 Objective-C 是基于 ANSI C 的,我們可以自由地將 C 代碼直接和 Objective-C 代碼混合在一起。而且我們的代碼可以調(diào)用非 Cocoa 的編程接口中定義的所有函數(shù),比如 Carbon 和 BSD。您甚至可以將 C++代碼混合到 Cocoa 代碼中,并將它們 連接在同一個執(zhí)行文件中。

同時Cocoa 還支持 Java,Cocoa 為此定義了一個平行的 Java 類庫,并且實現(xiàn) 了一個將 Java 接口映射到 Objective-C 實現(xiàn)的橋機(jī)制。Cocoa 的 Java 支持使您可以將本地的 Java 對象 和 Cocoa 對象混合在一起使用(在某些限制下)。我們甚至可以用PyObjC,即Python/Objective-C橋來進(jìn)行Cocoa編程。Python是一種解釋性的、注重交互的、及面向?qū)ο蟮木幊陶Z言。PyObjC使Python對象可以向 Objective-C對象傳遞消息,就象傳遞給Python對象一樣;同時還使Objective-C對象可以向Python對象傳遞消息。

四、如何判斷一個程序是不是Cocoa程序

不知道同學(xué)們有沒有想過這個問題。我們工作時只知道打開Xcode,新建工程,敲代碼,編譯運(yùn)行,然后就告訴別人我剛剛寫的這個就是Cocoa程序!

是什么因素使一個程序成為 Cocoa 程序呢?肯定不是編程語言,因為在 Cocoa 開發(fā)中可以使用各種語言;也不是開發(fā)工具,因為在命令行上就可以創(chuàng)建 Cocoa 程序(雖然那會使開發(fā)過程變得復(fù)雜,且需要消耗大量時間)。那么,所有 Cocoa 程序的共同點(diǎn)是什么?是什么使它們變得與眾不同?答案是這些程序都是由一些對象組成,而這些對象最終都是從 NSObject 這個根類繼承下來的;還有,這些程序都是基于 Objective-C 運(yùn)行時(runtime system)環(huán)境的。

需要說明的是,上面的說法還需要做一點(diǎn)限制:

首先,Cocoa 還有另一個根類,即 NSProxy。只是 NSProxy 很少用于 Cocoa 編程。其次,我們可以創(chuàng)建自己的根類,只是這需要很多工作(包括編寫與 Objective-C 運(yùn)行時環(huán)境進(jìn)行交互的代碼),為此花費(fèi)時間可能是不值得的。

五、除了Cocoa外還可以使用其它框架開發(fā)Mac OS X (IOS)程序嗎

答案也是肯定的。在本文的第二章節(jié)中我們說過,跟Cocoa處于同一級別的還有另外兩個開發(fā)框架:Carbon和Java。我們可以使用Xcode利用Carbon模版和JDK來進(jìn)行程序開發(fā)。只不過由于Cocoa的各種優(yōu)點(diǎn),官方并不推薦使用它們來進(jìn)行開發(fā)工作,Carbon模版在iOS SDK 3.1之后的Xcode都不再提供了,JDK的API也不再更新。


參考文檔:

Cocoa Fundamentals Guide

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/Introduction/Introduction.html#//apple_ref/doc/uid/TP40002974-CH1-SW1


本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
轉(zhuǎn)?iPhone應(yīng)用開發(fā)必知必會的三大基礎(chǔ)
Cocoa Touch框架
[精校版]Using Swift with Cocoa and Objective-C--互用性--Cocoa數(shù)據(jù)類型
iOS 整體框架類圖
博客
iOS系統(tǒng)框架概述
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服