簡體   English   中英

NSMutableDictionary的默認容量是多少?

[英]What is the default capacity of NSMutableDictionary?

基本上你打電話的時候

[[NSMutableDictionary alloc] init];

Apple將創建一些默認大小的字典。 什么是默認大小?

有趣的是,在iOS上至少看起來蘋果對init做同樣的事情就好像它是initWithCapacity:0 我在儀器下運行了以下代碼:

int max=1000000;
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:max];
for(int i=0; i < max; i++) {
    [array addObject:[[NSMutableDictionary alloc] init]];
}
if(true) return array;  // Don't let the compiler remove the ref

接下來我做了一些非常相似的事情,但明確指定了0容量:

int max=1000000;
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:max];
for(int i=0; i < max; i++) {
    [array addObject:[[NSMutableDictionary alloc] initWithCapacity:0]];
}
if(true) return array; // Don't let the compiler remove the ref

這兩款產品在iOS 9設備上的最大耗電量為55.3 MB。 然后我嘗試在創建字典時使用initWithCapacity:1:

int max=1000000;
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:max];
for(int i=0; i < max; i++) {
    [array addObject:[[NSMutableDictionary alloc] initWithCapacity:1]];
}
if(true) return array; // Don't let the compiler remove the ref

在那種情況下,我的最大消耗是116.4 MB。

正如其他評論者所指出的那樣,這可能因操作系統而異,甚至可能因版本而異。 不要依賴它,但這是告訴NSMutableDictionary init正在做什么的一種方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM