OC基礎 類和物件

2021-06-27 07:27:46 字數 3021 閱讀 4820

1. oc1>oc是物件導向:關注的是解決問題需要哪些物件。

2> 和c程式一樣,oc也需要通過編譯和鏈結兩個步驟。

終端指令:以main.m為例

編譯:cc -c main.m

執行:./a.out

3> 關鍵字以@開頭,字串以@開頭,其他基本語法:

4>和c語言一樣,oc程式的入口依然是main函式。

5>nslog與printf的區別:

2.類和物件

1> 類:具有相同屬性或行為的物件都可抽象成乙個類 ,

類是抽象的,是對物件的描述,相當於造車的圖紙。想要建立物件必須先有類。

一般的名詞都是類。    

類主要考慮:

類名:第乙個字母必須大寫,且不能有下滑線,多個單詞組成的類名用駝峰標識。

屬性:(成員變數)

方法:(行為)

2> 物件:物件是根據類建立而來,是實體,相當於根據圖紙造出來的車子。

3. 類的宣告和實現

1> 類的宣告:用來說明類裡面具有哪些屬性(成員變數)以及有哪些方法。

格式:寫在@inte***ce和@end之間。

eg:

//宣告乙個car類(宣告物件的屬性和行為):

@inte***ce car :nsobject // car是類名,nsobject目的是讓car這個類具有建立物件的能力,:是繼承的意思,即繼承nsobject類中所有屬性

{ @public; // 代表所有成員變數都可以被指標間接訪問。

int _speed; //建立乙個speed屬性(成員變數,預設為0,且不能在此進行初始化),且宣告中不能給成員變數賦值

/* 注:成員變數名一定要以下劃線__開頭:

優點:(1)可以和get方法名區分

(2)可以和普通變數名區分

*/} -(void)run;//宣告乙個run方法。

@end

2> 類的實現:就做一件事情,說清楚宣告中的方法具有哪些功能。

//方法的實現(說明方法裡有什麼**,也就是說方法是什麼功能)

-(void) run

@end

int main()

訊息機制:1> 告訴p所指向的物件之行run訊息;

2> 物件會沿著內部的isa指標指向的類,在類裡面尋找run方法;

3> 當在類中找到此方法時,就呼叫此方法。

方法只有宣告,沒有實現(經典錯誤);

方法沒有宣告,只有實現(編譯器會警告,但是可以執行,oc的弱語法);

編譯的時候,訪問沒有的成員變數會報錯,訪問沒有的方法,只會警告。

注意

1> 類在建立物件之前,會將類載入進記憶體,而且

類中存放的是方法列表

(不會存放成員屬性)

2> 每個物件都預設含有isa指標,此指標指向類,然後每個類都有superclass指向父類。

3> 

每個物件的成員變數是單獨擁有的,方法是共有的。

4.  方法

1> oc方法分為兩種,物件方法和類方法: 

物件方法:以「-」號開頭

類方法:以」+「號開頭。

2> 不帶引數的方法

宣告:

呼叫:

3> 帶引數的方法

宣告:

呼叫:

4>方法名注意:

冒號也是方法的一部分;

同乙個類中不允許有兩個物件的方法名相同。

5. 方法與函式的區別

(1)物件方法都是減號-開頭,方法必須是物件呼叫、(通過物件呼叫方法)

(2)物件方法只能由物件來呼叫,物件方法歸類物件所有。

1>方法宣告寫在@inte***ce 和 @end之間

2>方法實現寫在@implementation和@end之間

(3)函式跟物件無關係(函式不依賴物件),跟類沒有任何聯絡,函式歸整個程式檔案所有。

(4)函式不能訪問oc物件成員。

(5)函式可以寫在檔案的任何位置,但是不能寫在@inte***ce和@end之間

注:如果類需要呼叫結構體,則首先需要使用結構體建立結構體具體數值,然後類才能呼叫,     

eg1:

錯誤寫法:p->birthday=;

正確寫法1: p->birthday.year=2014;

p->birthday.month=4;

p->birthday.day=2;

正確寫法2: data d=;

p->birthday=d;

原因:因為結構體只能在定義變數的同時賦值,不能先定義變數,然後再賦值。

注意點:指標使用->   ; 結構體使用.點語法

OC基礎 類和物件03

類的定義分為兩個部分.類的宣告 inte ce 類名 nsobject 方法的宣告 方法表示類的功能.end 類的實現 implementation類名 方法的實現 end 類的注意點 a.類必須要有宣告和實現 b.類名用你描述的事物的名稱來命名 類名的每1個單詞的首字母必須要以大寫開頭.c.基本上...

OC 物件導向,類和物件

面向過程,c語言是一門面向過程語言,關注的是如何解決問題,需要哪些步驟 物件導向,oc是一門物件導向語言,關注的是解決問題需要哪些物件。可以對類進性操作也可以對物件進行操作,即方法,同乙個方法可以應用於不同多個物件。classorinstance method 對類和例項應用方法 inte ce 部...

ios開發之OC基礎 類和物件

本系列的文章主要來自於個人在學習前鋒教育 歐陽堅老師的ios開發教程之oc語言 一定要明確乙個要從事的方向,要不然就會感到迷茫。學習ios開發,並且從事ios開發這個行業,這就是我的選擇。看到我的部落格系列文章,其中大多是關於c qt linux網路程式設計 opengl unity3d等方面。從表...