黑馬程式設計師 OC核心語法

2021-06-28 15:22:53 字數 3342 閱讀 9259

1、點語法

1> 本質:是方法呼叫,不是成員呼叫

2> 當使用點語法時,編譯器會自動展開成相應方法

stu.age=10 

相當於 [stu 

setage:10] 

(賦值為set方法)

int age=stu.age 

相當於int age=[stu age] 

(取出為get方法)

死迴圈注意:

錄入: 

-(void) 

setage:(int) age 

讀取: 

-(int) 

age

@public:任何地方都能直接訪問物件的成員變數

@private:只能在當前類的物件方法中直接訪問

@protected:能在當前類和子類的物件方法中直接訪問

2、@property和@synthesize

1> 

@property用在@inte***ce中,可以自動生成某個成員變數的setter 和getter的宣告和實現

@property int 

age;

//   相當於 

-(void) 

setage :(int)age; 

//  

-(int)age;  

2> 

@synthesize用在@implementation中,可以自動生成某個成員變數的setter和getter的實現

@synthesize age=_age

// 相當於

-(void) 

setage:(int)age;

-(int)age  

注意:

1、 如果只寫了@synthesize age,預設訪問age這個成員變數,如果沒有age這個成員變數,會生成age這

個成員變數

2、 @synthesize age=_age 訪問的是_age這個成員變數

3、 如果乙個類沒有定義成員變數,@synthesize age=_age會自動生成@private型別的_age變數

3、id:萬能指標,能操作任何oc物件(只適用於oc物件)

構造方法:(用來完整的建立乙個可用物件)

1. person *p=[person new]; 

(1)分配儲存空間 

(+alloc方法)

(2)初始化 

(- init方法)

new方法做的事情

呼叫+alloc方法,分配儲存空間 

// person *p1=[person alloc];

呼叫- init 方法,進行初始化(初始化完畢,預設為0) // 

person *p2=[p1 init]; 

- init 進行初始化,相當於:

person *p3=[ [ person alloc ] init ];

2. 任何物件構造之前首先要呼叫父類的構造方法(init)

3. 若想某個物件一建立出來,它的成員變數就是某個值(10),就重寫構造方法 

例: - (id) 

init

return self; 

//返回初始化完畢的物件 }

4. 重寫構造方法的步驟:(1)呼叫父類的構造方法,初始化父類([super init])

(2)再進行子類內部成員變數的初始化

5. 自定義構造方法

規範:(1)一定是物件方法,以 - 開頭

(2)返回值一般都是id型別

(3)方法名一般以initwith開頭

-(id)initwithname:(nsstring*)name

return self; 

//返回初始化完畢的物件 }

4、分類(category)(給類擴充一些方法)

1. 格式

分類的宣告:@inte***ce 類名(分類名稱) 

@end

分類的實現:@implementation 類名(分類名稱) 

@end

2. 作用:不改變原來類的內容的基礎上為類增加一些新的方法

3. 注意點:

1>分類只能增加方法,不能增加成員變數

2>分類的實現裡面可以增加成員變數

3>分類可是重新實現原來類中的方法,但是會覆蓋,導致原來的方法不可再用

4>分類方法優先去分類中找,然後再去原來的類中找,最後再去父類中找

5、description方法(物件方法)

2> 利用nslog和%@輸出物件時,會呼叫物件的-description方法,description方法的返回值是(nsstring*)

3>若想將物件的屬性值(age=10,name="jack")列印出來,可以重寫description方法

-(nsstring *)description

*注意點:不能在-description方法中使用nslog列印self 

(死迴圈)

4>利用nslog和%@輸出類物件時,結果為類名,因為呼叫的是+description方法

6、nslog輸出

nslog(@"%p",&p) 

// 指標變數的位址

nslog(@"%p",p) 

// 物件的位址

nslog(@"%@",p) 

// 

nslog(@"%d",_ _line_ _) 

// 輸出當前行號

nslog(@"%s",_ _file_ _) 

// 輸出檔案路徑

nslog(@"%s\n",_ _func_ _) 

//輸出所在函式名

nslog輸出語言字串的時候,不能有中文

7、sel

1>sel其實是對方法的一種包裝,將方法包裝成乙個sel型別的資料,去找對應的方法位址,找到方法地

址,就可以呼叫方法

2>每個類的方法列表都儲存在類物件中,每個方法都有乙個與之對應的sel型別的物件,根據乙個sel物件

就可以找到方法的位址進而呼叫方法

3>sel物件的建立

sel s=@selector(test); 

//將test方法包裝成乙個sel型別的資料

sel s2=nsselectorfromstring(@"test"); 

//將字串test包裝成乙個sel型別的資料

4>sel物件的其他用法

//將sel物件轉為nsstring物件

nsstring*str=nsstringformselector(@selector(test));

person *p=[person new];

//呼叫物件p的test方法

[p performselector:@selector(test)];

黑馬程式設計師 OC基本語法

oc是c系列語言,是物件導向的語言,而c語言是面向過程的,那麼首先要理解物件導向和面向過程的區別。面向過程是專注 事件 本身,這件事從發生到結束的行為。例如怎麼把大象裝進冰箱,面向過程的思想是這樣的,首先開啟冰箱門,把大象裝進去,然後把冰箱門關上。而物件導向是專注於 事物 本身的,同樣是裝大象,物件...

黑馬程式設計師 OC物件導向之核心語法

一 點語法 點語法的本質其實就是呼叫類的set 和 get 方法,具體例子如下 person.h oc核心語法 created by lpmac on 14 5 30.import inte ce person nsobject void setage int age int age end per...

黑馬程式設計師 OC基本語法總結

黑馬程式設計師 1 oc的源副檔名是.m,oc 完全相容c語言 2 oc裡面的關鍵字大部分是以 開頭,字串以 開頭。3 nslog為oc的輸出函式,包含在import foundation為框架 foudation.h包含foundation框架裡所有的標頭檔案 即每乙個與框架名相同的標頭檔案都包含...