NSHashTable

作者: 雷霸龙 | 来源:发表于2021-03-05 17:15 被阅读0次
NSHashTable

是更广泛意义的NSSet,区别于NSSet / NSMutableSet,NSHashTable有如下特性:
NSSet / NSMutableSet是对其成员的强类型引用,这些成员被通过hash方法和isEqual方法来完成哈希和对比功能

  • NSHashTable是可变的
  • NSHashTable可以持有weak类型的成员变量
  • NSHashTable可以在添加成员变量的时候复制成员
  • NSHashTable可以随意的存储指针并且利用指针的唯一性来进行hash同一性检查(检查成员变量是否有重复)和对比操作(equal)
NSMapTable

是对更广泛意义的NSDictionary。和NSDictionary / NSMutableDictionary相比具有如下特性:

  • NSDictionary / NSMutableDictionary会复制keys并且通过强引用values来实现存储。
  • NSMapTable是可变的。
  • NSMapTable可以通过弱引用来持有keys和values,所以当key或者value被deallocated的时候,所存储的实体也会被移除。
  • NSMapTable可以在添加value的时候对value进行复制
  • 和NSHashTable类似,NSMapTable可以随意的存储指针,并且利用指针的唯一性来进行对比和重复检查。
NSPointerArray

类似于数组的集合,但具有更广泛的可用内存语义;继承自NSObject;NSPointerArray具有以下特点:

  • 与NSMutableArray一样,使用下标有序的插入或移除元素,且可修改数组内容;
  • 可以插入或删除nil,并且 nil 参与 count 的计算;
  • count 可以 set,如果直接 set count,那么会使用 nil 占位;
  • 可以使用 weak 来修饰成员;
  • 成员可以是所有指针类型;
  • 遵循 NSFastEnumeration,可以通过 for...in 来进行遍历。

相关文章

网友评论

    本文标题:NSHashTable

    本文链接:https://www.haomeiwen.com/subject/nhfdqltx.html