OC復習

字符串的創建:

第一種方式:

char a[] = "lanOu";

initWithUTF8String:將C語言中的字符串轉換為OC重的字符串.

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

NSLog(@"%@",string1);

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

NSString *string3 = @"lanOu3g";

NSLog(@"%@",string3);

第三種方式:

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

NSLog(@"%@",string2);

作用1:創建一個普通的字符串對象.

作用2:將別的類型的對象轉換成字符串類型的對象.

作用3:字符串拼接.

字符串長度

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";

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

NSString *string1 = [string substringToIndex:5];

NSLog(@"%@",string1);

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

NSString *string2 = [string substringFromIndex:5];

NSLog(@"%@",string2);

截取下標從3開始長度為4的字符串

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

NSLog(@"%@",string3);

字符串拼接

NSString *string2 = [string stringByAppendingString:@"藍歐"];

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

字符串替換

NSString *string = @"lanoudalian";

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

/*

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

NSLog(@"%@",string2)

*/

字符串類型轉換成其他類型

將字符串轉換成長整型

NSInteger a = [string1 integerValue];

將字符串轉換成浮點型

NSString*string2 = @"18.9";

float b = [string2 floatValue];

NSString *string3 = @"18";

int c = [string3 intValue];

大小寫轉換

(1)全部大寫

NSString *upperString = [string uppercaseString];

(2)全部小寫

NSString *lowerString = [string lowercaseString];

(3)首字母大寫

NSString *capitalStr = [string capitalizedString];

判斷開頭結尾

//判斷是否以xx開頭

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

判斷是否以xx結尾

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);

數組

系統提供的數組類:類似于c語言中的數組的功能

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

oc中提供了兩類數組:一類是NSArray(不可變數組) 一類是NSMutableArray(不可變數組)

可變與不可變的區別:可變就意味著可以對原有對象進行操作,不可變就意味著一旦創建,內容就不可改變.

(1)使用初始化方法創建數組

(2)使用便利器構造器方法創建數組

(3)字面量

當元素為空的時候,使用firstObject以及lastObject可以保證程序安全,不會崩潰,返回值為nil,但使用objectAtIndex:時,如果數組為空,則程序崩潰.

查找xx 對應的下標

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

NSLog(@"%lu",index);

判斷數組中是否包含某個對象

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

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

判斷兩個數組是否相等

if ([string1 isEqualToString:string2])

NSArray和NSString之間的轉換

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

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

NSLog(@"%@",array);

Capacity容量

一下三種方式都是創建一個可變的空數組

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

NSMutableArray *youArray = [NSMutableArray arrayWithCapacity:1];

NSMutableArray *bigArray = [NSMutableArray array];

增加一個數據

addObject: 在數組的最后面添加

[bigArray addObject:@"lanou"];

在指定位置插入一個元素

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

刪除

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

[bigArray removeObject:@"beijing"];

2

[bigArray removeObjectAtIndex:0];

替換

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

交換指定位置的兩個元素

[bigArray exchangeObjectAtIndex:0 withObjectAtIndex:1];

刪除全部

[bigArray removeAllObjects];

數組小結:數組是用來管理一組有序的元素的集合,必須保證數組中存放的都是對象,而且數組中可以存放相同元素.

字典

字典:用來存儲具有一一對應關系的數據,本質上也是一個大容器

字面量

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

求字典的元素個數

NSUInteger count = dic2.count;

將字典中所有的key放到了一個數組中

NSArray *keys = dic2.allKeys;

將字典中所有的value放到一個數組中

NSArray *values = dic2.allValues;

字典本身是無序的.

可變字典

創建對象

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

字典增加一個元素

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

移除元素

[dic removeObjectForKey:@"city"];

移除所有元素

[dic removeAllObjects];

集合

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

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

元素的個數

NSUInteger count = mySet.count;

獲取集合中的元素

NSString *string1 = [mySet anyObject];

將集合中的元素取到一個數組中

NSArray *myArray = mySet.allObjects;

可變集合

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

添加元素

[mySet addObject:@"cc"];

刪除元素

[mySet removeObject:@"aa"];

小結:

數組,字典,集合的區別:

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

不同點:

1.使用場景:

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

字典:用來管理一組具有一一對應關系的數據的集合.

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

2.特點:

數組:有序,并且元素可以重復使用.

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

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

3.取值方式:

數組:通過下標獲取元素.

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

集合:angObject? 獲得一個數組? forin 遍歷



繼承

繼承的優勢:其實就是省代碼,曾強程序的可拓展性和可修改性.

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

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

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

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

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

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

封裝

是面向對象方法的重要原則,就是把對象的屬性和操作(或服務)結合為一個獨立的整體,并盡可能隱藏對象的內部實現細節

封裝途徑

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

封裝的目的是增強安全性和簡化編程,使用者不必了解具體的實現細節,而只是要通過外部接口,以特定的訪問權限來使用類的成員。

封裝在網絡編程里面的意思, 當應用程序用TCP傳送數據時,數據被送入協議棧中,然后逐個通過每一層直到被當作一串比特流送入網絡,其中每一層對收到的數據都要增加一些首部。

原則

1把盡可能多的東西藏起來.對外提供簡捷的接口。

2把所有的屬性藏起來。

多態

1.同一操作作用于不同的對象,可以有不同的解釋,產生不同的執行結果。在運行時,可以通過指向基類的指針,來調用實現派生類中的方法。

2.C++中,實現多態有以下方法:虛函數,抽象類,覆蓋,模板(重載和多態無關)。

3.OC中的多態:不同對象對同一消息的不同響應.子類可以重寫父類的方法

4.多態就是允許方法重名 參數或返回值可以是父類型傳入或返回。

代理

第一步:聲明協議

第二步:聲明代理

第三步:代理人執行協議方法

第四步:簽訂協議

第五步:成為代理人

第六步:實現協議方法

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,836評論 6 540
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,275評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,904評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,633評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,368評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,736評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,740評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,919評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,481評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,235評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,427評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,968評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,656評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,055評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,348評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,160評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,380評論 2 379

推薦閱讀更多精彩內容