Cocoa简介
Cocoa是什么?
Cocoa是OS X和 iOS操作系統(tǒng)的程序的運行環(huán)境。
是什么因素使一個程序成為Cocoa程序呢?不是編程語言,因為在Cocoa開發(fā)中你可以使用各種語言;也不是開發(fā)工具,你可以在命令行上就可以創(chuàng)建Cocoa程序。Cocoa程序可以這么說,它是由一些對象組成,而這些對象的類最后都是繼承于它們的根類 :NSObject。而且它們都是基于Objective-C運行環(huán)境的。
1.1、Cocoa框架
iOS中,Cocoa眾多框架中最重要最基本的兩個框架是:Foundation 和 UIKit。
Foundation 和界面無關(guān),也可以說和界面無關(guān)的類基本是Foundation框架的,和界面相關(guān)的是UIKit框架。
這兩個框架在系統(tǒng)中處于的位置如圖:
1.2、Foundation框架
好吧,那我們看看兩個框架的類組織架構(gòu)圖,第一個先看Foundation的,三個圖,包括了Foundation所以的類,圖中灰色的是iOS不支持的,灰色部分是OS X系統(tǒng)的。
將上圖Foundation框架中的類進(jìn)行邏輯分類如下:
1.3 UIKit框架
應(yīng)用程序可以通過三種方式使用UIKit創(chuàng)建界面
在圖中可以看出,responder 類是圖中最大分支的根類,UIResponder為處理響應(yīng)事件和響應(yīng)鏈 定義了界面和默認(rèn)行為。當(dāng)用戶用手指滾動列表或者在虛擬鍵盤上輸入時,UIKit就生成時間傳送給UIResponder響應(yīng)鏈,直到鏈中有對象處理這個事件。相應(yīng)的核心對象,比如:UIApplication ,UIWindow,UIView都直接或間接的從UIResponder繼承。
2、Cocoa對象
2.1 Objective-C是面向?qū)ο蟮恼Z言
Objective-C和ref="http://lib.csdn.net/base/java">Java C++一樣,有封裝,繼承,多態(tài),重用。但是它不像C++那樣有重載操作法、模版和多繼承,也沒有Java的垃圾回收機制。
2.2 Objective-C的優(yōu)點
Objective-C語言有C++ Java等面向?qū)ο蟮奶攸c,那是遠(yuǎn)遠(yuǎn)不能體現(xiàn)它的優(yōu)點的。Objective-C的優(yōu)點是它是動態(tài)的。動態(tài)能力有三種:
動態(tài)類-運行時確定類的對象
動態(tài)綁定-運行時確定要調(diào)用的方法
動態(tài)加載--運行時為程序加載新的模塊
2.3 動態(tài)能力相關(guān)的isa指針
每個Objective-C對象都有一個隱藏的數(shù)據(jù)結(jié)構(gòu),這個數(shù)據(jù)結(jié)構(gòu)是Objective-C對象的第一個成員變量,它就是isa指針。這個指針指向哪呢?它指向一個類對象(class object 記住它是個對象,是占用內(nèi)存空間的一個變量,這個對象在編譯的時候編譯器就生成了,專門來描述某個類的定義),這個類對象包含了Objective-C對象的一些信息(為了區(qū)分兩個對象,我把前面提到的對象叫Objective-C對象),包括Objective-C對象的方法調(diào)度表,實現(xiàn)了什么協(xié)議等等。這個包含信息就是Objective-C動態(tài)能力的根源了。
總結(jié):
Cocoa是廠房,廠房里機器就是OC。你要做的就是在廠房這個環(huán)境(cocoa)里,利用機器(OC)這個工具,生產(chǎn)出你想要的產(chǎn)品。
轉(zhuǎn)載:
https://www.zhihu.com/question/20065865
總結(jié)
- 上一篇: Java 构造函数的详解
- 下一篇: 科普书籍