iOS官方文檔 Foundation篇---NSMapTable

NSMapTable

類似于字典的集合,但具有更廣泛的可用內存語義;繼承自NSObject;NSMapTable具有以下特點:

  • 與NSDictionary一樣,以鍵值對的方式存儲內容;
  • key 可以不用遵循 NSCopying 協議;
  • key 和 value 的內存管理方式可以分開,如:key 是強引用,value 是弱引用;
創(chuàng)建和初始化
// 根據選項返回映射表
NSMapTable *mapTable = [[NSMapTable alloc]initWithKeyOptions:NSPointerFunctionsStrongMemory valueOptions:NSPointerFunctionsStrongMemory capacity:5];

NSPointerFunctions *functions = [[NSPointerFunctions alloc]initWithOptions:NSPointerFunctionsStrongMemory];
// 根據方法返回映射表
NSMapTable *mapTable1 = [[NSMapTable alloc]initWithKeyPointerFunctions:functions valuePointerFunctions:functions capacity:5];

// 創(chuàng)建對鍵和值的強引用的映射表
NSMapTable *mapTable2 = [NSMapTable strongToWeakObjectsMapTable];

// 創(chuàng)建對鍵的強引用和值的弱引用的映射表
NSMapTable *mapTable3 = [NSMapTable strongToWeakObjectsMapTable];

// 創(chuàng)建對鍵和值的弱引用的映射表
NSMapTable *mapTable4 = [NSMapTable weakToWeakObjectsMapTable];

// 創(chuàng)建對鍵的弱引用和值的強引用的映射表
NSMapTable *mapTable5 = [NSMapTable weakToStrongObjectsMapTable];
操作內容
NSMapTable *mapTable = [NSMapTable strongToWeakObjectsMapTable];

// 將指定的鍵值對添加到映射表中
[mapTable setObject:@"obj0" forKey:@"key0"];//key0 -> obj0

// 從映射表中刪除指定的鍵及其關聯值
[mapTable removeObjectForKey:@"key0"];//{}

// 清空映射表中的鍵值對
[mapTable removeAllObjects];//{}
訪問內容
NSMapTable *mapTable = [NSMapTable strongToWeakObjectsMapTable];
// 將指定的鍵值對添加到映射表中
[mapTable setObject:@"obj0" forKey:@"key0"];//key0 -> obj0
[mapTable setObject:@"obj1" forKey:@"key1"];//key1 -> obj1

// 獲取指定鍵的關聯值
NSString *obj = [mapTable objectForKey:@"key0"];//obj0

// 獲取映射表中鍵值對的數量
NSUInteger count = [mapTable count];//obj0

// 根據枚舉器遍歷鍵
NSEnumerator *enumerator = [mapTable keyEnumerator];
id object;
while (object = [enumerator nextObject]) {
    NSLog(@"開始打?。?@\n",object);
/*
    開始打?。簁ey0
    開始打?。簁ey1
*/
}

// 根據枚舉器遍歷值
NSEnumerator *enumerator1 = [mapTable objectEnumerator];
id object1;
while (object1 = [enumerator1 nextObject]) {
    NSLog(@"開始打?。?@\n",object1);
/*
    開始打印:obj0
    開始打?。簅bj1
*/
}
映射表轉字典
NSDictionary *dict = [mapTable dictionaryRepresentation];

優(yōu)秀文章

# TODO:

歡迎留言指正,會持續(xù)更新。。。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,651評論 1 32
  • 卷首語 歡迎來到 objc.io 第七期! 這個月,我們選擇了 Foundation 框架作為我們的主題。 Fou...
    評評分分閱讀 1,670評論 0 8
  • 1.設計模式是什么? 你知道哪些設計模式,并簡要敘述?設計模式是一種編碼經驗,就是用比較成熟的邏輯去處理某一種類型...
    龍飝閱讀 2,302評論 0 12
  • 1.設計模式是什么? 你知道哪些設計模式,并簡要敘述? 設計模式是一種編碼經驗,就是用比較成熟的邏輯去處理某一種類...
    司馬DE晴空閱讀 1,466評論 0 7
  • 眾多周知,晚清最大的特點就是腐敗。這種腐敗上至皇帝、太后,下至道臺、縣令,幾乎無一幸免。在萬般污濁中,卻有一處衙門...
    史趣閱讀 653評論 0 0

友情鏈接更多精彩內容