版本記錄
版本號 | 時間 |
---|---|
V1.0 | 2017.08.28 |
前言
NSMutableDictionary
是可變字典乔宿,相對NSDictionary
來說,它是可變的框沟,它的可變性可以參考NSMutableArray
數(shù)組六水,但是它與數(shù)組還是有很大不同,盡管他們都屬于集合類凰盔,下面這幾篇我們繼續(xù)來將一下基礎(chǔ)類的知識墓卦。還是老規(guī)矩從整體到局部,從淺入深進(jìn)行講解户敬,謝謝大家落剪。感興趣的可以參考我寫的上篇幾篇。
1. NSMutableDictionary簡單細(xì)說(一)—— 整體了解
一尿庐、+ (instancetype)dictionaryWithCapacity:(NSUInteger)numItems;
該方法的作用是:創(chuàng)建并返回一個可變字典忠怖,最初給它足夠的分配內(nèi)存來保存給定數(shù)量的條目。
下面看一下返回值:
-
return
:一個新的可變字典屁倔,具有足夠的分配內(nèi)存來保存numItems
條目脑又。
這里還要注意:
- 可變字典根據(jù)需要分配額外的內(nèi)存,所以
numItems
只是建立對象的初始容量。
看示例代碼
- (void)demoDictionaryWithCapacity
{
NSMutableDictionary *dictM = [NSMutableDictionary dictionaryWithCapacity:10];
NSLog(@"dictM = %@", dictM);
}
看輸出結(jié)果
2017-08-28 22:08:19.381 JJOC[4977:124658] dictM = {
}
結(jié)論:創(chuàng)建初始容量的字典问麸。
二往衷、- (instancetype)initWithCapacity:(NSUInteger)numItems;
該方法的作用:和上面方法作用是一樣的。
還需要注意:
- 可變字典根據(jù)需要分配額外的內(nèi)存严卖,所以
numItems
只是建立對象的初始容量席舍。該方法是NSMutableDictionary
的指定的初始化程序。
看示例代碼
- (void)demoInitWithCapacity
{
NSMutableDictionary *dictM = [[NSMutableDictionary alloc] initWithCapacity:10];
NSLog(@"dictM = %@", dictM);
}
看輸出結(jié)果
2017-08-28 22:13:42.779 JJOC[5240:128879] dictM = {
}
結(jié)論:實(shí)例化初始容量的字典哮笆。
三来颤、- (instancetype)init;
這個沒什么說的,所有對象的初始化方法都可以這么寫稠肘。
結(jié)論:簡單到爆福铅。
四、+ (NSMutableDictionary<KeyType,ObjectType> *)dictionaryWithSharedKeySet:(id)keyset;
該方法的作用就是:創(chuàng)建一個經(jīng)過優(yōu)化的可變字典项阴,用于處理已知的一組鍵滑黔。
其實(shí)這個方法我們前面說NSDictionary
的時候涉及到過,我們當(dāng)時用類方法sharedKeySetForKeys:
獲取一組共享的key环揽。
下面我們看參數(shù)和返回值:
-
keyset
:keyset由NSDictionary類創(chuàng)建的方法sharedKeySetForKeys :
略荡。如果keyset為零,則會出現(xiàn)異常歉胶。 如果keyset不是sharedKeySetForKeys:
返回的對象汛兜,則會引發(fā)異常。 -
return
:一個新的可變字典針對已知的一組鍵進(jìn)行了優(yōu)化通今。
還需注意:
- 不在
key
集中key
仍可以在字典中設(shè)置粥谬,但這種用法不是最佳的。
結(jié)論:共享鍵值的使用衡创。
后記
未完帝嗡,待續(xù)~~~