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:
2> 類的實現:就做一件事情,說清楚宣告中的方法具有哪些功能。//宣告乙個car類(宣告物件的屬性和行為):
@inte***ce car :nsobject // car是類名,nsobject目的是讓car這個類具有建立物件的能力,:是繼承的意思,即繼承nsobject類中所有屬性
{ @public; // 代表所有成員變數都可以被指標間接訪問。
int _speed; //建立乙個speed屬性(成員變數,預設為0,且不能在此進行初始化),且宣告中不能給成員變數賦值
/* 注:成員變數名一定要以下劃線__開頭:
優點:(1)可以和get方法名區分
(2)可以和普通變數名區分
*/} -(void)run;//宣告乙個run方法。
@end
訊息機制:1> 告訴p所指向的物件之行run訊息;//方法的實現(說明方法裡有什麼**,也就是說方法是什麼功能)
-(void) run
@end
int main()
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等方面。從表...