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