程序员社区

NSHashTable

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 来进行遍历。
赞(1) 打赏
未经允许不得转载:IDEA激活码 » NSHashTable

一个分享Java & Python知识的社区