1. 程式人生 > >Objective-C學習1

Objective-C學習1

pan 獲取 們的 san 名稱 eth 標識符 lin 個人

首先,我要說的是,想要學好Objective-C(下面簡稱OC)就必需要有C語言的基礎。由於OC是C語言的一個超集;OC是面向對象的語言.[C語言是面向過程的語言],OC中的好多語法和C語言中類似。OC也全然能夠兼容C語言,實現混編;所以想學好OC,最好是有C語言的基礎。(假設有C++的基礎或者思想,就更能學好OC)

1.OC中文件都是以.m的文件存儲的。聲明文件同c一樣也是.h文件。

個人提醒:無論是C還是OC最好都要用駝峰標識來些標識符

創建類:

類名:首字母一般都是大寫

定義類的步驟: 1,定義類名;2。編寫類的屬性--->(實例變量) ;3,編寫類的行為--->方法;

提示:一般類名最好與文件名稱一樣,方便程序猿們的理解;一般類下的屬性聲明 用下劃線開頭。原因是這裏聲明的是全局變量,方便與局部變量中的關鍵詞重名;這裏僅僅能聲明變量。不能賦值;

方法的定義:

-(void)method : (int) arguments;

-(方法類型:實例方法。也叫對象方法)

+(類方法)

(void)返回值;沒有返回值是void;

method 方法名;

(int《類型》):參數類型括起來。

arguments:參數名。

-------

方法定義分為:不帶參數:如-(void)shoping;

帶一個參數:void(shoping):(float)price;

帶兩個參數:void(shopping):(float)price :(float)weight;

-----------------------------

方法的實現: [email protected]

//在這裏寫方法的實現;

-(void)shopping:(float)price{

NSLog(@"我正在shopping!");

}

@end;

然後在main函數中應用

#import "Person.h"

int main(){

//通過類名創建對象;

//Person *person = [Person alloc];

//person = [person init];

//alloc 是在內存中申請一塊空間區域,來存放此對象的信息。

//下邊調用init方法初始化一些默認數據;

Person *person = [[Person alloc] init];//將兩個步驟嵌套在一起;

//左邊是【通過類類型】聲明變量;右邊是創建對象。

} ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//上節:定義類;用類創建對象;

-——————————————

另一種創建對象方法:

Person * person2 =[Person new];(OC中不建議使用這樣的方式)

一般使用這樣的方式:Person *person1=[[Person alloc] init];

_______________________

調對象裏的方法。

-開頭的為:實例方法【或叫對象方法】。 +:類方法;

-開頭的必須有對象。(如person1)

在main中運行到此↓:
[person1 shopping:200];//200為參數
就會進入到shopping函數中;
//這就是調用了這個shopping這個實例方法;實例方法必須有對象才幹調用;
//通過類能創建非常多方法出來;

----------------------------------

創建完對象person1;

設置名字和年齡;

沒有辦法直接設置名字和方法,僅僅能通過方法來設置屬性

設置名字方法:-(void)setName:(NSString *)name;//方法描寫敘述:設置屬性 name;

實現:在.m文件裏:

-(void)setName:(NSString *)name{

_name = name;

}

----------------------------------

再回到main中設置名字:

[person1 setName:@"張三"];//把張三字符串傳入到name函數中。name再把張三傳給_name;

-----------------------------------

屬性:又叫成員變量,又叫全局變量。又叫實例變量。全局變量全部的方法中都能用;

————————————————

專門設置屬性的方法:叫做設置器方法或者叫set方法。
在外部獲取屬性的方法:叫做獲取器方法(get方法);有返回值。

-----------------------------------

比方-(NSString *)name;

-(NSInteger)age;
實現:
-(NSString *)name{
return _name;
}
-(NSInteger)age{
return _age;
}
調用:NSString *name1 = [person1 name]

+++++++++++++++++++++++++++++++++++++++++++++

之前都是一個參數的方法;今天學多個參數的方法

—————————————————

-(void)setName:(NSString *)name setAge:(NSInteger *)age;//《方法名有兩個部分:setName和setAge》;setAge在這裏能夠省掉(可是不推薦用)。

實現:-(void)setName:(NSString *)name setAge:(NSInteger *)age{

_name = name;

_age = age;

}//一般不會這樣定義。這裏僅僅是用於演示。一般都是一個變量定義一個設置方法

調用:[person1 setName:@"張三" setAge:22];【對象調用方法!】

————————————————

【在.m和.h間切換】command+cotrl+上下鍵;tab鍵能補全我們為寫完的keyword或標識符;

————————————————

方法類型:-對象方法, +類方法。

+:類方法

用類名去調方法;稱之為類方法。
方法描寫敘述:是用於創建一個Person對象的。
定義類方法:+(Person *)newPerson;
實現類方法:+(Person *)newPerson{
Person *p = [[Person alloc] init];
//這裏能夠初始化一些變量
//[p setName:@"zhangsan" setAge:22]
}
調用類:Person *person3 = [Person newPerson];

--------------------------------

假設沒有創建對象,就不能使用屬性;

實例對象都沒有,哪兒來的屬性?

要想使用,必需要有對象;

//在類方法中無法訪問屬性;

屬性:誰調的方法 屬性就屬於誰; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

補充對象的創建。
創建一個對象的時候,裏面的成員變量並沒有初始化。那它們默認是什麽呢?
@interface Person :NSObject
int _Age;

//系統默覺得其初始化為:Byte:0;short:0;int:0;long 0L。char:\u0000‘ ;float:0.0F;double:0.0D;Bollean:FALSE;全部指針:nil。

@end

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Objective-C學習1