OC復(fù)習(xí)

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

第一種方式:

char a[] = "lanOu";

initWithUTF8String:將C語(yǔ)言中的字符串轉(zhuǎn)換為OC重的字符串.

NSString *string1 = [[NSString alloc]initWithUTF8String:a];

NSLog(@"%@",string1);

第二種方式: 字面量(最常用)

NSString *string3 = @"lanOu3g";

NSLog(@"%@",string3);

第三種方式:

NSString *string2 = [[NSString alloc]initWithFormat:@"hello lanOu"];

NSLog(@"%@",string2);

作用1:創(chuàng)建一個(gè)普通的字符串對(duì)象.

作用2:將別的類(lèi)型的對(duì)象轉(zhuǎn)換成字符串類(lèi)型的對(duì)象.

作用3:字符串拼接.

字符串長(zhǎng)度

NSUInteger length = string.length;

獲取字符串中的字符

NSString *string = [NSString stringWithFormat:@"lanOuKeJi"];

unichar c = [string characterAtIndex:2];

NSLog(@"%c",c);

判斷字符串是否相等

if ([string1 isEqualToString:string2])

下面的判斷的是字符串的地址.

if (string1 == string2)

字符串比較

NSString *string1 = @"laowang";

NSString *string2 = @"yali";

NSComparisonResult result = [string1 compare:string2];

NSLog(@"%ld",result);

switch (result) {

case NSOrderedAscending:

NSLog(@"前小后大");

break;

case NSOrderedDescending:

NSLog(@"前大后小");

break;

default:

NSLog(@"相等");

break;

}

獲取子字符串

NSString *string = @"lanOuDaLian";

截取下標(biāo)為5之前的字符(不包含5).

NSString *string1 = [string substringToIndex:5];

NSLog(@"%@",string1);

截取下標(biāo)為5之后的字符(包含5).

NSString *string2 = [string substringFromIndex:5];

NSLog(@"%@",string2);

截取下標(biāo)從3開(kāi)始長(zhǎng)度為4的字符串

NSString *string3 = [string substringWithRange:NSMakeRange(3, 4)];

NSLog(@"%@",string3);

字符串拼接

NSString *string2 = [string stringByAppendingString:@"藍(lán)歐"];

NSString *string3 = [string2 stringByAppendingFormat:@"%d",1233];

字符串替換

NSString *string = @"lanoudalian";

前面的a 是我想要替換的字符串,那么后面的b 是我想要替換成的字符串

/*

NSString *string2 = [string stringByReplacingOccurrencesOfString:@"a" withString:@"b"];

NSLog(@"%@",string2)

*/

字符串類(lèi)型轉(zhuǎn)換成其他類(lèi)型

將字符串轉(zhuǎn)換成長(zhǎng)整型

NSInteger a = [string1 integerValue];

將字符串轉(zhuǎn)換成浮點(diǎn)型

NSString*string2 = @"18.9";

float b = [string2 floatValue];

NSString *string3 = @"18";

int c = [string3 intValue];

大小寫(xiě)轉(zhuǎn)換

(1)全部大寫(xiě)

NSString *upperString = [string uppercaseString];

(2)全部小寫(xiě)

NSString *lowerString = [string lowercaseString];

(3)首字母大寫(xiě)

NSString *capitalStr = [string capitalizedString];

判斷開(kāi)頭結(jié)尾

//判斷是否以xx開(kāi)頭

BOOL isPrefix = [string hasPrefix:@"xx"];

判斷是否以xx結(jié)尾

BOOL isSuffix = [string hasSuffix:@"xx"];

可變字符串

NSMutableString *mStr = [[NSMutableString alloc]initWithFormat:@"dalian"];

NSLog(@"%@",mStr);

在dalian之后拼接上lanou

[mStr appendFormat:@"lanou%d",1];

NSLog(@"%@",mStr);

[mStr appendString:@"heihei"];

NSLog(@"%@",mStr);

插入字符串

[mStr insertString:@"hehe" atIndex:0];

NSLog(@"%@",mStr);

刪除字符串

[mStr deleteCharactersInRange:NSMakeRange(3, 2)];

NSLog(@"%@",mStr);

替換字符串

[mStr replaceCharactersInRange:NSMakeRange(3, 2) withString:@"123"];

NSLog(@"%@",mStr);

重置字符串

[mStr setString:@"heihei"];

NSLog(@"%@",mStr);

數(shù)組

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

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

oc中提供了兩類(lèi)數(shù)組:一類(lèi)是NSArray(不可變數(shù)組) 一類(lèi)是NSMutableArray(不可變數(shù)組)

可變與不可變的區(qū)別:可變就意味著可以對(duì)原有對(duì)象進(jìn)行操作,不可變就意味著一旦創(chuàng)建,內(nèi)容就不可改變.

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

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

(3)字面量

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

查找xx 對(duì)應(yīng)的下標(biāo)

NSUInteger index = [nameArrayOne indexOfObject:@"xx"];

NSLog(@"%lu",index);

判斷數(shù)組中是否包含某個(gè)對(duì)象

BOOL isTrue = [nameArrayOne containsObject:@"xx"];

NSLog(@"isTrue == %d",isTrue);

判斷兩個(gè)數(shù)組是否相等

if ([string1 isEqualToString:string2])

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

NSString *string = @"www.lanou3g.com";

NSArray *array = [string componentsSeparatedByString:@"."];

NSLog(@"%@",array);

Capacity容量

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

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

NSMutableArray *youArray = [NSMutableArray arrayWithCapacity:1];

NSMutableArray *bigArray = [NSMutableArray array];

增加一個(gè)數(shù)據(jù)

addObject: 在數(shù)組的最后面添加

[bigArray addObject:@"lanou"];

在指定位置插入一個(gè)元素

[bigArray insertObject:@"heihei" atIndex:0];

刪除

1.刪除指定元素(只要是這個(gè)對(duì)象,有多少刪多少)

[bigArray removeObject:@"beijing"];

2

[bigArray removeObjectAtIndex:0];

替換

[bigArray replaceObjectAtIndex:1 withObject:@"heihei"];

交換指定位置的兩個(gè)元素

[bigArray exchangeObjectAtIndex:0 withObjectAtIndex:1];

刪除全部

[bigArray removeAllObjects];

數(shù)組小結(jié):數(shù)組是用來(lái)管理一組有序的元素的集合,必須保證數(shù)組中存放的都是對(duì)象,而且數(shù)組中可以存放相同元素.

字典

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

字面量

NSDictionary *dic2 = @{@"name":@"xiaoyali",@"sex":@"nan"};

求字典的元素個(gè)數(shù)

NSUInteger count = dic2.count;

將字典中所有的key放到了一個(gè)數(shù)組中

NSArray *keys = dic2.allKeys;

將字典中所有的value放到一個(gè)數(shù)組中

NSArray *values = dic2.allValues;

字典本身是無(wú)序的.

可變字典

創(chuàng)建對(duì)象

NSMutableDictionary *dic = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@"zhangsan",@"name",@"nan",@"sex", nil];

字典增加一個(gè)元素

[dic setObject:@"18" forKey:@"age"];

移除元素

[dic removeObjectForKey:@"city"];

移除所有元素

[dic removeAllObjects];

集合

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

NSSet *mySet = [[NSSet alloc]initWithObjects:@"aa",@"bb",@"cc",@"dd",@"aa",@"bb",@"bb",@"cc", nil];

元素的個(gè)數(shù)

NSUInteger count = mySet.count;

獲取集合中的元素

NSString *string1 = [mySet anyObject];

將集合中的元素取到一個(gè)數(shù)組中

NSArray *myArray = mySet.allObjects;

可變集合

NSMutableSet *mySet = [[NSMutableSet alloc]initWithObjects:@"aa",@"bb", nil];

添加元素

[mySet addObject:@"cc"];

刪除元素

[mySet removeObject:@"aa"];

小結(jié):

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

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

不同點(diǎn):

1.使用場(chǎng)景:

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

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

集合:用來(lái)管理一組無(wú)序,并且具有互異性的元素的集合.

2.特點(diǎn):

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

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

集合:無(wú)序,元素具有互異性.

3.取值方式:

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

字典:通過(guò)key值,獲取元素.

集合:angObject? 獲得一個(gè)數(shù)組? forin 遍歷



繼承

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

1.繼承的上層:父類(lèi),繼承的下層:子類(lèi)

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

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

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

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

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

封裝

是面向?qū)ο蠓椒ǖ闹匾瓌t,就是把對(duì)象的屬性和操作(或服務(wù))結(jié)合為一個(gè)獨(dú)立的整體,并盡可能隱藏對(duì)象的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)

封裝途徑

封裝就是將抽象得到的數(shù)據(jù)和行為(或功能)相結(jié)合,形成一個(gè)有機(jī)的整體,也就是將數(shù)據(jù)與操作數(shù)據(jù)的源代碼進(jìn)行有機(jī)的結(jié)合,形成“類(lèi)”,其中數(shù)據(jù)和函數(shù)都是類(lèi)的成員。

封裝的目的是增強(qiáng)安全性和簡(jiǎn)化編程,使用者不必了解具體的實(shí)現(xiàn)細(xì)節(jié),而只是要通過(guò)外部接口,以特定的訪問(wèn)權(quán)限來(lái)使用類(lèi)的成員。

封裝在網(wǎng)絡(luò)編程里面的意思, 當(dāng)應(yīng)用程序用TCP傳送數(shù)據(jù)時(shí),數(shù)據(jù)被送入?yún)f(xié)議棧中,然后逐個(gè)通過(guò)每一層直到被當(dāng)作一串比特流送入網(wǎng)絡(luò),其中每一層對(duì)收到的數(shù)據(jù)都要增加一些首部。

原則

1把盡可能多的東西藏起來(lái).對(duì)外提供簡(jiǎn)捷的接口。

2把所有的屬性藏起來(lái)。

多態(tài)

1.同一操作作用于不同的對(duì)象,可以有不同的解釋,產(chǎn)生不同的執(zhí)行結(jié)果。在運(yùn)行時(shí),可以通過(guò)指向基類(lèi)的指針,來(lái)調(diào)用實(shí)現(xiàn)派生類(lèi)中的方法。

2.C++中,實(shí)現(xiàn)多態(tài)有以下方法:虛函數(shù),抽象類(lèi),覆蓋,模板(重載和多態(tài)無(wú)關(guān))。

3.OC中的多態(tài):不同對(duì)象對(duì)同一消息的不同響應(yīng).子類(lèi)可以重寫(xiě)父類(lèi)的方法

4.多態(tài)就是允許方法重名 參數(shù)或返回值可以是父類(lèi)型傳入或返回。

代理

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

第二步:聲明代理

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

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

第五步:成為代理人

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

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

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

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