Objective-C學習1

來源:互聯網
上載者:User

標籤:objective-c   objective-c學習   oc   oc中的類   

      首先,我要說的是,想要學好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;

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

方法的實現:在.m中@implementation

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

-(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鍵能補全我們為寫完的關鍵字或標識符;

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

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

+:類方法

用類名去調方法;稱之為類方法;
方法描述:是用於建立一個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 

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.