Objective-C物件導向初體驗是本文要介紹的內容,主要是來瞭解物件導向語言Objective-C,這裡沒有細節的文法,大都是關於Objective-C物件導向概念理解的東西,來看詳細內容講解。
1、前言
語言其本質上都是某種抽象,不管是現實生活中人們交流的語言,還是電腦語言.
2、對象
在Objective-C中,所有的對象都有一個共同的特徵,就是每一個對象都包含一個isa指標.這個指標指向當前對象所屬的類.
在Objective-C中存在一個名為id的類型,這個和上面所說這個isa指標有一定的聯絡.
C代碼
- typedef struct objc_object {
- Class isa;
- } *id;
- typedef struct Objective-C_object {
- Class isa;
- } *id;
其中Class類型為指向objc_class結構體的指標類型.
這些對象在記憶體中都是由其地址唯一標示,所有的對象都是id類型的.
我們繼續來將這個isa指標,通過isa指標我們可以在啟動並執行時候知道當前對象是屬於什麼Class的,
對象的記憶體管理:
在Objective-C中,存在兩種記憶體管理的方式
一種是基於引用技術的,在這種情況下,程式員需要時刻注意記憶體的申請和釋放,以免發生記憶體泄露.
還有一種是記憶體回收,學過Java的同學都知道java的記憶體回收,使得程式員從繁雜容易出錯的記憶體釋放工作中得到解放.
目前在Pihone的開發環境中不支援記憶體回收的方式.
3、訊息
訊息這個概念是比較特殊的,在其他的一般的電腦語言中都叫做方法調用或者函數調用,但在Objective-C中,很形象的叫做訊息,在文法上也和別的語言的函數或者方法差別很大.
在我們現實生活中,人和人進行溝通就是通過不同形式的訊息進行的,比如說郵件,首先得有接受者,然後將訊息內容通過郵件發送給接受者.
如果將上面的情景用Objective-C的訊息文法描述出來差不多是這樣的
[郵件接受者 郵件:郵件內容]
我們將郵件接受者稱為receiver,郵件:郵件內容的整體稱作message
- [Receiver message]
如果將message再分解,我們可以寫成下面的
- [Receiver selector:argument]
這種情景在別的語言中就是調用recevier這個對象的某個方法
這裡的selector為方法名,他在訊息發送的時候,會”選擇”一個方法的實現來運行,所以這裡的方法名被稱作為選取器
而且這裡的selector也是Objective-C實現多態的關鍵所在.
4、類
在Objective-C中,類只支援單繼承.
在程式啟動並執行時候,編譯器會自動根據你的類定義產生一個”類對象”,這個”類對象”是類執行個體對象的原型,它知道如何去建立屬於這個類的執行個體對象.
執行個體對象擁有各自變數屬性,而方法都是共用的.
“類對象”的type都為Class,上面有提到過Class類型為指向objc_class結構體的指標類型.
在Objective_C中NSObject類是一個根類。
小結:Objective-C物件導向初體驗的內容介紹完了,希望本文對你有所協助!