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