博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSHashTable 和 NSMapTable
阅读量:6964 次
发布时间:2019-06-27

本文共 1095 字,大约阅读时间需要 3 分钟。

NSHashTable 是 NSSet 的通用版本,和 NSSet / NSMutableSet 不同的是,NSHashTable 具有下面这些特性:

  • NSSet / NSMutableSet 持有成员的强引用,通过 hash 和 isEqual: 方法来检测成员的散列值和相等性。
  • NSHashTable 是可变的,没有不可变的对应版本
  • NSHashTable 可以持有成员的弱引用
  • NSHashTable 可以在加入成员时进行 copy 操作
  • NSHashTable 可以存储任意的指针,通过指针来进行相等性和散列检查

用法

NSHashTable *hashTable = [NSHashTable hashTableWithOptions:NSPointerFunctionsCopyIn];[hashTable addObject:@"foo"];[hashTable addObject:@"bar"];[hashTable addObject:@42];[hashTable removeObject:@"bar"];NSLog(@"Members: %@", [hashTable allObjects]);复制代码

NSMapTable 是 NSDictionary 的通用版本。和 NSDictionary / NSMutableDictionary 不同的是,NSMapTable 具有下面这些特性:

  • NSDictionary / NSMutableDictionary 对键进行拷贝,对值持有强引用。
  • NSMapTable 是可变的,没有不可变的对应版本。
  • NSMapTable 可以持有键和值的弱引用,当键或者值当中的一个被释放时,整个这一项就会被移除掉。
  • NSMapTable 可以在加入成员时进行 copy 操作。
  • NSMapTable 可以存储任意的指针,通过指针来进行相等性和散列检查。

注意: NSMapTable 专注于强引用和弱引用,意味着 Swift 中流行的值类型是不适用的,只能用于引用类型。

用法

NSMapTable *mapTable = [NSMapTable mapTableWithKeyOptions:NSMapTableStrongMemory valueOptions:NSMapTableWeakMemory];[mapTable setObject:delegate forKey:@"foo"];NSLog(@"Keys: %@", [[mapTable keyEnumerator] allObjects]);复制代码

转载地址:http://qxwsl.baihongyu.com/

你可能感兴趣的文章
Git回退到旧版本
查看>>
Java本地缓存CRUD测试,LocalCache出自简书
查看>>
python爬虫——爬虫简介
查看>>
SQLCMD命令的几种用法
查看>>
1,Spring-mvc添加参数校验
查看>>
区块链100讲:世界银行说,比特币给各国央行打了个样
查看>>
Easyui的tree和右键菜单
查看>>
怎么修改truffle中的solidity版本?
查看>>
我的第一个基于springboot的接口
查看>>
BCH易于使用不只是说说而已
查看>>
webpack配置(第四步:html篇(进阶篇))
查看>>
shell基础、命令操作、通配符
查看>>
深入理解JVM(五)——垃圾回收器
查看>>
spring mvc 环境搭建
查看>>
装饰者模式
查看>>
单身税的时代就要来临,你还没有用Python帮你找一个女朋友吗?
查看>>
Kafka的底层实现原理
查看>>
CAS实现单点登录实例源码
查看>>
JEESZ-Zookeeper集群安装
查看>>
Dubbo背景和简介
查看>>