OC內(nèi)容復(fù)習(xí)

OC

字符串型:

NSString :不可變字符串

NSMutableString :可變字符串

字符串的創(chuàng)建:

(1)使用C語言創(chuàng)建字符串的方式然后用initWithUTF8String(將C語言中的字符串轉(zhuǎn)換為OC中的字符串)進(jìn)行轉(zhuǎn)換,實(shí)現(xiàn)OC字符串的創(chuàng)建

(2)字面量(最常用的字符串創(chuàng)建方式)OC

NSString*string =@"lanOu3g";

NSLog(@"%@",string);

(3)NSIntegera =18;

NSString*string1= [[NSStringalloc]initWithFormat:@"%ld",a];

NSLog(@"%@",string1);

字符串長度:.length

獲取字符字符串中的字符:characterAtIndex(獲取下標(biāo))

判斷字符串是否相等: isEqualToString

字符串比較:

NSString*string3=@"laowang";

NSString*string3=@"yali";

NSComparisonResultresult = [string1compare:string2];

// ?NSLog(@"%ld",result);

switch(result) {

caseNSOrderedAscending:

NSLog(@"前小后大");

break;

caseNSOrderedDescending:

NSLog(@"前大后小");

break;

default:

NSLog(@"相等");

break;

}

獲取字符串:

截取下標(biāo)為3之前的字符(不包含3): ? ? ? ? ?substringToIndex:3

截取下標(biāo)為3之后的字符(包含3): ? ? ? ? ?substringFromIndex:3

截取下標(biāo)為3開始長度為3的字符串: ? ? ? ? ?substringWithRange:NSMakeRange(3, 4)

字符串拼接:stringByAppendingString ? stringByAppendingFormat

字符串替換:前面的a是我想要替換的字符串,那么后面的b是我想要替換成的字符串: stringByReplacingOccurrencesOfString:@“a” withString:@“b"

從下標(biāo)i開始j位的字符串替換成字符串xxx: stringByReplacingCharactersInRange:NSMakeRange(i, j) withString:@“xxx”

字符串類型轉(zhuǎn)換成其他類型:

integerValue floatValue intValue

大小寫轉(zhuǎn)換:

大寫:uppercaseString小寫:lowercaseString首字母大寫:capitalizedString

判斷開頭結(jié)尾:

開頭: hasPrefix:@“”結(jié)尾: hasSuffix:@“”

插入字符串: ?insertString:@“” atIndex:n

刪除字符串: ?deleteCharactersInRange: NSMakeRange(i , j)

替換字符串: ?replaceCharactersInRange: NSMakeRange(i, j) withString:@“"

重置字符串: setString:@“"

集合型:

1.NSArray :OC不可變數(shù)組

NSMutableArray :可變數(shù)組

2.NSSet :OC不可變集合

NSMutableSet :可變集合

3.NSDictionary :OC不可變字典

NSMutableDictionary :可變字典

數(shù)組

系統(tǒng)提供的數(shù)組類:類似于c語言中的數(shù)組的功能

數(shù)組是一個大容器,數(shù)組中可以存儲不同類型的對象,但必須要保證數(shù)組中存儲的都是對象.

(1)使用初始化方法創(chuàng)建數(shù)組

(2)使用便利構(gòu)造器方法創(chuàng)建數(shù)組

(3)字面量

*當(dāng)元素為空時,使用fristObject以及l(fā)astObject可以保證程序安全,不會崩潰,返回值為nil,但使用objectAtIndex:時,如果數(shù)組為空,則程序崩潰.

查找xx對應(yīng)下標(biāo): ?indexOfObject:@“xx"

判斷數(shù)組中是否包含某個對象: ?containsObject:@“xx"

判斷兩個數(shù)組是否相等: ? ?x1 ?isEqualToString ?x2

NSArray和NSString之間的轉(zhuǎn)換:

componentsSeparatedByString和componentsJoinedByString

Capacity容量

以下三種方式都是創(chuàng)建一個可變的空數(shù)組

NSMutableArray*myArray = [[NSMutableArrayalloc]initWithCapacity:1];

NSMutableArray*youArray = [NSMutableArrayarrayWithCapacity:1];

NSMutableArray*bigArray = [NSMutableArrayarray];

增加一個數(shù)據(jù)addObject

在指定位置插入一個元素insertObject

刪除指定元素(只要是這個對象,有多少刪多少) ?removeObject:@“xx"

刪除元素removeObjectAtIndex:0

刪除全部removeAllObjects

替換replaceObjectAtIndex:1 withObject:@“xx"

交換指定位置的兩個元素exchangeObjectAtIndex:0 withObjectAtIndex:1

字典

字典:用來存儲具有一一對應(yīng)關(guān)系的數(shù)據(jù),本質(zhì)上也是一個大容器

字典本身是無序的.

setObject:forkey:工作原理:先查找字典中有沒有對應(yīng)的key,如果有,則修改key對應(yīng)的value,如果沒有則把key-value作為元素添加到字典中.

移除元素removeObjectForKey:@“"

移除所有元素removeAllObjects

集合

特點(diǎn):無序性,互異性(不顯示重復(fù)的元素),本質(zhì)上是一個大容器.

添加元素addObject:@“xx"

刪除元素removeObject:@“xx"

數(shù)組,字典,集合的區(qū)別:

相同點(diǎn):都是oc中的容器類,可以儲存多個元素,但是元素必須都是對象,不限制對象的類型.

不同點(diǎn):

1.使用場景:

數(shù)組:用來管理一組有序的元素的集合.

字典:用來管理一組具有一一對應(yīng)關(guān)系的數(shù)據(jù)的集合.

集合:用來管理一組無序,并且具有互異性的元素的集合.

特點(diǎn):

2.數(shù)組:有序,并且元素可以重復(fù)使用.

字典:無序,key-value是字典中的一個元素,key是唯一的,一個key只能對應(yīng)一個value,但是一個value可以對應(yīng)多個key.

集合:無序,元素具有互異性.

3.取值方式:

數(shù)組:通過下標(biāo)獲取元素.

字典:通過key值,獲取元素.

集合:anyObject獲得一個數(shù)組forin遍歷

面向?qū)ο蟮娜筇匦?封裝(成員變量),繼承和多態(tài)

封裝

在OC語言中,使用@interface和@implementation來處理類

@interface接口@implementation實(shí)現(xiàn)

Set方法

作用:為外界提供一個設(shè)置成員變量值的方法

命名規(guī)范:

(1)方法名必須以set開頭

(2)set后面跟上成員變量的名稱,首字母大寫

(3)返回值一定是void

(4)一定要接收一個參數(shù),而且參數(shù)類型需要和成員變量的類型一致

(5)形參名不能和成員變量名一樣(成員變量名前加_區(qū)分)

好處:

(1)保證數(shù)據(jù)的安全性

(2)對設(shè)置的數(shù)據(jù)進(jìn)行過濾

Get方法

作用:為調(diào)用者返回對象內(nèi)部的成員變量的類型一致

命名規(guī)范:

(1)一定有返回值,返回值的類型和成員變量的類型一致

(2)方法名和成員變量一樣

(3)不需要接收任何參數(shù)

self

self是一個指針,調(diào)用當(dāng)前方法,self就指向誰

用途:

(1)可以利用self->成員變量名訪問當(dāng)前對象內(nèi)部的成員變量(僅在對象方法中)

(2)[self方法名];可以調(diào)用其他的對象方法或者是類方法

繼承

繼承的優(yōu)勢:其實(shí)就是省代碼,曾強(qiáng)程序的可拓展性和可修改性.

1.繼承的上層:父類,繼承的下層:子類

2.繼承具有單向性:只有單向傳遞,如果A作為B的父類,則A就不能作為B的子類.

3.繼承具有傳遞性:C繼承于B,B繼承于A,那么C具有A和B的所有內(nèi)容.

4.子類繼承父類的全部實(shí)例變量和方法.

5.子類從父類繼承過來的內(nèi)容就是自己的,只不過來源于父類.

原則:當(dāng)多個類中出現(xiàn)部分相同的特征和行為時,可以將相同部分寫成一個父類,其他類繼承即可.

子類繼承了父類同樣就擁有了父類的所有方法和屬性(成員變量)

優(yōu)點(diǎn):抽取了重復(fù)的代碼,建立了類與類之間的關(guān)系

缺點(diǎn):耦合性太強(qiáng)

*OC語言是單繼承語言,在OC語言中,基本上所有類的根類都是NSObject類

注意:

(1)編譯器從上往下執(zhí)行,所以在子類前面至少應(yīng)該要有父類的聲明;

(2)OC中不允許子類和父類有相同名稱的成員變量名;

(3)OC中的子類可以擁有和父類相同名稱的方法,在子類調(diào)用時,優(yōu)先去自己的內(nèi)部尋找,如果沒有則一層一層的往上找;

*重寫即子類重新實(shí)現(xiàn)了父類中的某個方法,覆蓋了父類以前的實(shí)現(xiàn).

Super

在子類中重寫方法時,可以讓調(diào)用者跳過這一層而調(diào)用父類中的方法.

作用:

(1)直接調(diào)用父類中的某一個方法

(2)Super處在對象方法中,那么就會調(diào)用父類的對象方法;Super處于類方法中,那么就會調(diào)用父類的類方法.

多態(tài)

多態(tài)在代碼中的體現(xiàn),即為多種形態(tài),必須要有繼承,沒有繼承就沒有多態(tài)。

在使用多態(tài)是,會進(jìn)行動態(tài)檢測,以調(diào)用真實(shí)的對象方法。

多態(tài)在代碼中的體現(xiàn)即父類指針指向子類對象。

協(xié)議

1.Protocol:就一個用途,用來聲明一大堆的方法(不能聲明成員變量),不能寫實(shí)現(xiàn)。

2.只要某個類遵守了這個協(xié)議,就擁有了這個協(xié)議中的所有方法聲明。

3.只要父類遵守了某個協(xié)議,那么子類也遵守。

4.Protocol聲明的方法可以讓任何類去實(shí)現(xiàn),protocol就是協(xié)議。

5.OC不能繼承多個類(單繼承)但是能夠遵守多個協(xié)議。繼承(:),遵守協(xié)議(< >)

6.基協(xié)議:是基協(xié)議,是最根本最基本的協(xié)議,其中聲明了很多最基本的方法。

7.協(xié)議可以遵守協(xié)議,一個協(xié)議遵守了另一個協(xié)議,就可以擁有另一份協(xié)議中的方法聲明。

代理

第一步:聲明協(xié)議

第二步:聲明代理

第三步:代理人執(zhí)行協(xié)議方法

第四步:簽訂協(xié)議

第五步:成為代理人

第六步:實(shí)現(xiàn)協(xié)議方法

?????M9u

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容