Objective-C學習1

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章