OC初步認(rèn)識(shí)-創(chuàng)新互聯(lián)

OC初步認(rèn)識(shí)

網(wǎng)站的建設(shè)成都創(chuàng)新互聯(lián)公司專注網(wǎng)站定制,經(jīng)驗(yàn)豐富,不做模板,主營(yíng)網(wǎng)站定制開發(fā).小程序定制開發(fā),H5頁(yè)面制作!給你煥然一新的設(shè)計(jì)體驗(yàn)!已為成都花箱等企業(yè)提供專業(yè)服務(wù)。

一 , 了解面向?qū)ο蠛兔嫦蜻^程的思想?yún)^(qū)別

1,面向過程編程(Procedureoriented Programming, POP ): 以事件為中心,關(guān)系完成該事件的詳細(xì)步驟,一步一步實(shí)現(xiàn)

2, 面向?qū)ο缶幊?Object Oriented Programming, OPP);: 以事務(wù)為中心,也就是參與事件的參與者,設(shè)計(jì)事物的功能,而完成事件只是事物的所有功能中的一個(gè)小功能

二, 類 和 對(duì)象 是什么

類: 具有相同特征和相同行為的事物的抽象,類是一個(gè)抽象概念,在生活中不具體,并且,在OC里只有一個(gè)類沒有根類,即NSObject,其他的類都有父類,根類

對(duì)象: 是類的實(shí)例,即類的具體表現(xiàn),是具體的,生活中的萬物都是對(duì)象

 描述一個(gè)類: 通過特征(靜態(tài)屬性) 和行為 (動(dòng)態(tài)屬性,動(dòng)作,功能)

三,具體類的定義要使用類的功能必須先定義類

定義類的分兩部分:

1, 類的接口部分:提供外部訪問接口,相當(dāng)于使用說明書

1),類的接口部分寫在.h文件里, 如定義一個(gè)名為Person的類打開”.h”文件里就有

@interface Student__1____ : NSObject

@end

定義:

 (1),以@interface開頭@end結(jié)束,只有把類的接口定義內(nèi)容寫在開始和結(jié)束之間才有效

 (2),@interface后的Student__1____是類名

 (3),類名后的":"冒號(hào)表示繼承,表示該類是有父類

 (4),:冒號(hào)后面的NSObject是父類名

2, 類的實(shí)現(xiàn)部分:相當(dāng)于功能的實(shí)現(xiàn)

類的實(shí)現(xiàn)部分寫在.m文件中

 類的實(shí)現(xiàn)部分: 打開”.m”文件里就有

@implementation Student__1____

@end

 (1),以@implementation 開頭,以@end結(jié)束,實(shí)現(xiàn)內(nèi)容必須寫在中間才有效

 (2),@implementation 后跟上Student__1____是要實(shí)現(xiàn)的類(需要指定要對(duì)哪一個(gè)類做實(shí)現(xiàn))

 類的實(shí)現(xiàn)其實(shí)就是實(shí)現(xiàn)該類的方法

四,具體類的使用以及它與C語(yǔ)言不同的表達(dá)方式

我們可以舉個(gè)具體的例子更明確

寫一個(gè)學(xué)生類;名字為Student__1____

以下均以學(xué)生類為例,不再聲明

使用類

1,第一步

首先在”.h”文件里寫類的接口部分(相當(dāng)于C語(yǔ)言中函數(shù)的聲明,這樣想可以更容易理解)

1),先在大括號(hào)內(nèi)定義實(shí)例變量

如: {

     NSString *name;

     NSString *sex;

     NSInteger age;

   }

其中實(shí)例變量必須寫在大括號(hào)之內(nèi),而且只能寫實(shí)例變量,對(duì)應(yīng)描述一個(gè)類的特征,(定義實(shí)例變量,相當(dāng)于C語(yǔ)言中結(jié)構(gòu)體中的結(jié)構(gòu)體成員)

2) 定義類的接口,即方法的聲明,方法對(duì)應(yīng)描述類的行為 (OC的類的接口相當(dāng)于C語(yǔ)言中函數(shù)的聲明)

在OC里,整型用NSInteger,且在OC里有字符串的類,所以定義一個(gè)字符串的變量有專門的關(guān)鍵字即NSString,NS是OC里語(yǔ)言的特點(diǎn)代表這是OC語(yǔ)言,另外就輸出方法與C語(yǔ)言的格式化輸出函數(shù)有所不同:

在C語(yǔ)言里輸出用printf()函數(shù) 在OC里用NSLog(@)方法輸出;括號(hào)的@不可少 @是OC語(yǔ)言的標(biāo)志

此外在C語(yǔ)言里變量類型都用()小括號(hào)括起來

在以下出現(xiàn)的"+" 和"-"等到在main函數(shù)里調(diào)用時(shí)再解釋

如:

(1),方法1,說自己的姓名,,性別,年齡

   - (void)sayMyself;

方法名 sayMyself

(2),方法2,說自己的愛好

  - (void)sayMyLove;

  方法名 sayMyLove

(3),方法3,說自己的工資

  - (NSInteger)saySalary:(NSInteger)money;

 在OC里如果方法有參數(shù),那么":"冒號(hào)也是方法名的一部分, 如果方法有多個(gè)參數(shù),則需要加多個(gè)":"

 如:該方法名為:saySalary:

自定義初始化方法

- (id)initStudentname:(NSString *)aName sex:(NSString *)aSex num:(NSString*)aNum major:(NSString *)aMajor age:(NSInteger)aAge;

2,第二步

在”.m”文件寫類的實(shí)現(xiàn)部分(相當(dāng)于C語(yǔ)言里的函數(shù)的實(shí)現(xiàn))

在OC里輸出的數(shù)據(jù)類型為字符串類型則用格式化說明符”%@”,并不是”%s”,其他的一般類型格式化說明符不變

如下;

(1),方法1,說自己的姓名,性別,年齡

- (void)sayMyself

{

   NSLog(@"name:%@,sex:%@,%ld",name,sex,(long)age);

}

(2),方法2,說自己的愛好

-(void)sayMyLove

{

NSLog(@"我喜歡敲代碼??????");

}

(3),方法3,說自己的工資

-(NSInteger)saySalary:(NSInteger) money

{

   return money;

}

3,第三步

OC中方法的調(diào)用采用消息發(fā)送機(jī)制即”[receiver message]”(中括號(hào)不能省略)(message)消息即方法, (receiver)消息的接收者 是類或者對(duì)象

在這里可以解釋"+" 和"-"的作用: 區(qū)分消息給類還是對(duì)象發(fā)送消息用 "+" 和 "-" ,如果方法是一個(gè)"-"號(hào)方法,是給對(duì)象發(fā)送消息,如果是"+"號(hào)方法,則是給類發(fā)送消息

1),方法的調(diào)用需要?jiǎng)?chuàng)建對(duì)象

創(chuàng)建對(duì)象分為兩步:

(1),開辟空間

   通過[Student__1____ alloc] 在堆區(qū)開辟的空間才是真正的對(duì)象,只不過對(duì)于指針變量per存儲(chǔ)著堆 區(qū)的首地址,通過它才能訪問對(duì)象,所有我們把指針變量stu1叫做對(duì)象,(真正的對(duì)象還是對(duì)區(qū)空間, stu1本質(zhì)上是一個(gè)指針變量)

(2), 初始化(賦初值) init方法完成初始化操作"-" 號(hào)方法,對(duì)象調(diào)用

但是通常創(chuàng)建對(duì)象把兩步操作連起來寫

如為學(xué)生類創(chuàng)建對(duì)象:

Student__1____ *stu1 [[[Student__1____ alloc] init]

在這里init是系統(tǒng)定義的初始化方法,如果是整型,則初始化為0,若為字符串,則初始化為nil(相當(dāng)于C語(yǔ)言里的NULL);

我們通??梢宰远x初始化

如:

1)在”.h”文件里寫接口

- (id)initStudentname:(NSString *)aName sex:(NSString *)aSex num:(NSString*)aNum major:(NSString *)aMajor age:(NSInteger)aAge;

“id”代表泛指類型,相當(dāng)于C語(yǔ)言里的”void *” ,對(duì)于字符串的類型說明符,必須是NSString + *;因?yàn)樗侵羔橆愋?/p>

2)在”.m”文件里寫初始化函數(shù)的實(shí)現(xiàn)

- (id)initStudentname:(NSString *)aName sex:(NSString *)aSex num:(NSString*)aNum major:(NSString *)aMajor age:(NSInteger)aAge;

{

   name = aName;

   sex = aSex;

   num = aNum;

   major = aMajor;

   age = aAge;

   return self;

}

在這里self作用是誰調(diào)用該方法,self就是誰.

在寫方法時(shí)要知道,在+(類)方法中不能使用實(shí)例變量,實(shí)例變量是依托于對(duì)象存在的,只有有了對(duì)象,實(shí)例變量才會(huì)有空間

如: 開辟空間時(shí)直接子自定義初始化

Student__1____ *stu1 = [[Student__1____ alloc]initStudentname:@"YangJunfang" sex:@"girl"num:@"541110010148" major:@"math" age:22];

言歸正傳,開辟空間后就可以調(diào)用方法了:

如下:

實(shí)現(xiàn)方法1,說自己的姓名,,性別,年齡

[stu1 sayMyself];

實(shí)現(xiàn)方法2, 說自己的愛好

 [stu1 sayMyLove];

實(shí)現(xiàn)方法3,說自己的工資

 NSInteger money = [stu1saySalary:10000];

輸出工資

 NSLog(@"money =%ld",money);

在這里需要定義一個(gè)整型的變量用來接收方法saySalary的返回值,因?yàn)槠浞祷刂禐檎?/p>

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

本文標(biāo)題:OC初步認(rèn)識(shí)-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://www.muchs.cn/article46/dgieeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、自適應(yīng)網(wǎng)站微信小程序、網(wǎng)站策劃、軟件開發(fā)、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)