Object c的基礎概念(一)

2021-05-26 15:36:15 字數 1631 閱讀 4213

下文為閱讀筆記。

一:object-c的類基本定義

1. 類定義在@inte***ce和@end之間。

2.myclass:nsobject的方式定義子類和父類。

3.{}中定義類的物件成員

4.-/+定義的是方法,-定義的是物件的方法,+定義的是類的方法。物件是類的乙個例項。對於物件的方法,也即是,當使用該方法之前必須先生成該類的乙個特定物件。

二:強型別和弱型別的引用

object-c的物件可以使用強型別引用和弱型別引用

myclass *myobject1; // strong typing
id myobject2; // weak typing
myclass * myobject1是一種強型別的定義方法,該定義方法與c++類似。

id myobject2是一種弱型別的定義方法,弱型別的物件主要用於集合類,集合類的物件通常在執行時才知道集合中內部的物件型別定義。弱型別的引用的使用與object-c的動態型別繫結(dynamic typing)息息相關,在object-c中,每乙個物件包含乙個成員變數isa,儲存著物件屬於哪乙個類的型別資訊。於是,開發人員能夠在執行時刻知道物件的定義,例如,其父類是什麼,實現了什麼函式等。

三:函式定義和呼叫

object-c的函式定義和呼叫都比較特別,為了讓物件執行某個操作,需要向物件傳送訊息,因此,函式的呼叫被稱作object messaging。其訊息的定義是[receiver message],前者是接收訊息的物件,後者是訊息的本身。此處先看看函式的定義:

函式的定義由函式的型別標記(method type identifier)、返回值(return type)、乙個或者多個的函式簽名關鍵字(method signature)、引數的型別和命名資訊組成。

函式的真實命名由各個級聯的函式簽名關鍵字組成。例如上述函式定義中函式真實的命名是(insertobject:atindex:)分號隔開引數的宣告。區域性的函式簽名關鍵字看起來更像是函式引數的內部命名,真正的引數命名反而在object messaging中不出現。例如,上述的函式呼叫可以寫成

[myarray insertobject:anobject atindex:0];再來看乙個例子,前一行是函式的定義,後面一行是函式的呼叫,可以看到後面的呼叫ojbect messaging中,寫的是函式方法簽名的關鍵字

(method signature keywords)而不是引數命名(parameter names)。由於沒有特別的函式名一項,注意其第乙個函式方法簽名關鍵字的

命名看起來就像函式名(changecolorto)+第乙個引數(red)- (int)changecolortored:(float)red green:(float)green blue:(float)blue;

[mycolor changecolortored:5.0 green:2.0 blue:6.0];上述例子中,例項方法的真是命名是: -changecolortored:green:blue: ,冒號隔開的各個引數順序不能更改。

轉 from:

object c難以理解的一些概念

1.object c 怎麼實現多型 答 多型是在runtime裡面實現的,在編譯的時候,compiler把所有class的定義都存放在class 例項物件裡面,class例項物件包含了class的父class 例項物件的位址,class方法的select id和位址,class變數的偏移等。所有ne...

object c 學習筆記 一 基礎術語

import intmain int argc,const char ar int count 4 nslog the numbers from 1 to 5 for int i 0 i return0 剛開始學oc,記錄下重點知識,以備及時複習和後續查詢.cocoa ios開發使用的工具包是蘋果公...

Object c一些基礎知識

int main int argc,const char argv 0代表程式是正常退出,任何非0的返回值代表有錯誤產生 nslog輸出各種資料型別的表示式 import int main int argc,const char argv return 0 鍵盤輸入的示例 import int ma...