版本記錄
版本號(hào) | 時(shí)間 |
---|---|
V1.0 | 2017.08.26 |
前言
NSArray
是數(shù)組的不變數(shù)組類兵多,不邊數(shù)組在初始化的時(shí)候元素就是不變的尖啡,不能更改任何一個(gè)元素,實(shí)際上我們用的較多的是可變數(shù)組剩膘,因?yàn)楹芏鄷r(shí)候我們都需要對(duì)數(shù)組元素進(jìn)行增刪改查衅斩,其中增刪改也只有可變數(shù)組可以做,也就是說(shuō)可變數(shù)組相對(duì)來(lái)說(shuō)更加靈活怠褐,這幾篇我們就說(shuō)一下可變數(shù)組的這個(gè)類及其相關(guān)知識(shí)畏梆,還是老規(guī)矩從整體到局部,從淺入深進(jìn)行講解奈懒,謝謝大家奠涌。感興趣的可以看我寫的上面幾篇。
1. NSMutableArray簡(jiǎn)單細(xì)說(shuō)(一)—— 整體了解
一磷杏、+ (instancetype)arrayWithCapacity:(NSUInteger)numItems;
該方法的作用就是初始化一個(gè)具有指定長(zhǎng)度的可變數(shù)組溜畅。可變數(shù)組根據(jù)需要擴(kuò)展; numItems
只是建立對(duì)象的初始容量极祸。
下面看簡(jiǎn)單例子慈格。
- (void)demoArrayWithCapacity
{
NSMutableArray *arrM = [NSMutableArray arrayWithCapacity:10];
NSLog(@"arrM = %@, count = %ld", arrM, arrM.count);
}
看輸出結(jié)果
2017-08-26 19:20:56.325 JJOC[10352:259906] arrM = (
), count = 0
可以看見,這里只是初始化長(zhǎng)度為10贿肩,但是現(xiàn)在還是長(zhǎng)度為0峦椰,數(shù)組中也沒(méi)什么元素,等待我們后需添加汰规。
結(jié)論:創(chuàng)建初始可變長(zhǎng)度的數(shù)組汤功。
二、+ (NSMutableArray<ObjectType> *)arrayWithContentsOfFile:(NSString *)path;
該方法的作用就是:創(chuàng)建并返回一個(gè)包含由給定路徑指定的文件內(nèi)容的可變數(shù)組溜哮。
看一下參數(shù)和返回值:
-
path
:包含由writeToFile:atomically:method
生成的可變數(shù)組的字符串表示形式的文件的路徑滔金。 -
return
:一個(gè)包含指定路徑文件內(nèi)容的可變數(shù)組。 如果文件無(wú)法打開或文件的內(nèi)容無(wú)法解析成可變數(shù)組茂嗓,則返回nil餐茵。
還要注意:
- 由aPath標(biāo)識(shí)的文件中的可變數(shù)組表示形式只能包含屬性列表對(duì)象
(NSString,NSData述吸,NSDate忿族,NSNumber锣笨,NSArray 或 NSDictionary對(duì)象)
。 有關(guān)詳細(xì)信息道批,請(qǐng)參閱屬性列表編程指南错英。 即使數(shù)組是可變的,這個(gè)數(shù)組所包含的對(duì)象是不可變的隆豹。
看一個(gè)簡(jiǎn)單例子:
- (void)demoArrayWithContentsOfFile
{
NSMutableArray *arrM = [NSMutableArray arrayWithContentsOfFile:@"/Users/lucy/Desktop/demo/JJOC/JJOC/arrayTest.plist"];
NSLog(@"arrM = %@, count = %ld", arrM, arrM.count);
}
看輸出結(jié)果
2017-08-26 19:27:42.110 JJOC[10591:267458] arrM = (
three,
two,
one
), count = 3
結(jié)論:根據(jù)指定文件路徑生成可變數(shù)組椭岩,不過(guò)這個(gè)文件可是有條件的。
三璃赡、+ (NSMutableArray<ObjectType> *)arrayWithContentsOfURL:(NSURL *)url;
該方法的作用就是:創(chuàng)建并返回一個(gè)包含給定URL指定內(nèi)容的可變數(shù)組判哥。
下面看一下參數(shù)和返回值:
-
url
:該文件的位置包含由writeToURL:atomically:
方法生成的可變數(shù)組的字符串表示形式。 -
return
:個(gè)包含由aURL指定的內(nèi)容的可變數(shù)組碉考。 如果位置無(wú)法打開或位置的內(nèi)容無(wú)法解析成可變數(shù)組塌计,則返回nil。
還需要注意:
- 由aURL標(biāo)識(shí)的位置處的數(shù)組表示必須只包含屬性列表對(duì)象
(NSString侯谁,NSData夺荒,NSDate,NSNumber良蒸,NSArray 或 NSDictionary對(duì)象)
。 即使數(shù)組是可變的伍玖,這個(gè)數(shù)組所包含的對(duì)象是不可變的嫩痰。
結(jié)論:根據(jù)URL的內(nèi)容轉(zhuǎn)化為可變數(shù)組,不一定會(huì)轉(zhuǎn)變成功窍箍。
四串纺、- (instancetype)init;
這個(gè)很簡(jiǎn)單了,對(duì)象都可以這么初始化的椰棘,alloc
和init
纺棺。
結(jié)論:簡(jiǎn)單到爆,但是很少這么用邪狞。
五祷蝌、- (instancetype)initWithCapacity:(NSUInteger)numItems;
該方法的作用其實(shí)和方法一中那個(gè)類方法的作用是相似的,這里是對(duì)象方法帆卓。
可變數(shù)組根據(jù)需要擴(kuò)展; numItems
只是建立對(duì)象的初始容量巨朦。該方法是一個(gè)指定的初始化程序。
看一下簡(jiǎn)單示例剑令。
- (void)demoInitWithCapacity
{
NSMutableArray *arrM = [[NSMutableArray alloc] initWithCapacity:10];
NSLog(@"arrM = %@, count = %ld", arrM, arrM.count);
}
看輸出結(jié)果
2017-08-26 19:37:41.384 JJOC[10890:276809] arrM = (
), count = 0
結(jié)論:初始化指定位數(shù)的可變數(shù)組糊啡。
六、- (NSMutableArray<ObjectType> *)initWithContentsOfFile:(NSString *)path;
該方法的作用參考方法二即可吁津。
下面看一個(gè)簡(jiǎn)單例子棚蓄。
- (void)demoInitWithContentsOfFile
{
NSMutableArray *arrM = [[NSMutableArray alloc ] initWithContentsOfFile:@"/Users/lucy/Desktop/demo/JJOC/JJOC/arrayTest.plist"];
NSLog(@"arrM = %@, count = %ld", arrM, arrM.count);
}
看輸出結(jié)果
2017-08-26 19:40:44.146 JJOC[11028:280035] arrM = (
three,
two,
one
), count = 3
結(jié)論:類似方法二,從指定文件路徑轉(zhuǎn)化為數(shù)組。
七梭依、- (NSMutableArray<ObjectType> *)initWithContentsOfURL:(NSURL *)url;
該方法的作用類似方法三稍算,這里就不多說(shuō)了。
結(jié)論:從指定URL轉(zhuǎn)化數(shù)組睛挚,參考方法三邪蛔。
后記
簡(jiǎn)單到爆,但是為了完整性和考慮新手扎狱,還是寫了一下侧到,謝謝大家的關(guān)注~~~