美文网首页
NSHashTable官方文档阅读

NSHashTable官方文档阅读

作者: AppleTTT | 来源:发表于2017-06-14 14:59 被阅读212次

    NSHashTable

    Overview

    NSHashTable在NSSet之后添加的类,但提供了不同的选项,特别是支持弱引用。区别如下:

    1. NSHashTable可以对其内的成员进行弱引用;
    2. NSHashTable的成员可以在添加的时候被拷贝一份副本;并且可以控制在将对象添加到NSHashTable中时是否调用对象上的 isEqualTo: 和 hash方法;
    3. 它可以包含任意指针(其成员不被约束为对象)。
    
    你可以将 NSHashTable 实例配置为对任意指针进行操作,而不仅仅是对象,尽管通常会鼓励使用 C 的 API: void * 指针来操作。基于对象的 API(例如 addObject:)将无法在不进行类型转换的情况下对无对象指针操作。
    

    由于它的一些选项,NSHashTable不是一个集合,因为它可以有不同的行为(例如,如果指定了两个isEqual:相等的字符串可能都被添加)。

    配置NSHashTable时,请注意,只有NSHashTableOptions中列出的选项才能保证其余的API能正常工作,包括复制,归档和快速枚举。 虽然其他NSPointerFunctions选项用于某些配置,例如保留任意指针,但并不是所有选项的组合都有效。 使用某些组合,NSHashTable可能无法正常工作,甚至可能无法正确初始化。

    NOTE: NSHashTable不适用于子类化。

    Symbols

    Initialization

    • - (instancetype)initWithOptions:(NSPointerFunctionsOptions)options capacity:(NSUInteger)initialCapacity

      根据使用的属性来初始化NSHashTable;

      options:NSHashTable里面元素的支持的选项;
      initialCapacity:NSHashTable可以容纳的元素的初始数量。


    • - (instancetype)initWithPointerFunctions:(NSPointerFunctions *)functions capacity:(NSUInteger)initialCapacity

      同上;

    Convenience Constructors

    • + (NSHashTable<ObjectType> *)weakObjectsHashTable

      返回一个用于存储对其内容的弱引用的新NSHashTable对象。

      一个新的NSHashTable,它使用NSPointerFunctionsWeakMemory和NSPointerFunctionsObjectPersonality,初始容量为0。


    • + (NSHashTable<ObjectType> *)hashTableWithOptions:(NSPointerFunctionsOptions)options

      使用给定的NSPointerFunctionsOptions去初始化NSHashTable;

    Accessing Content

    • @property(nonatomic, readonly) ObjectType anyObject

      NSHashTable对象里面的一个数据;
      如果哈希表不包含对象,则为nil。

      返回的对象不能保证是随机的。


    • @property(readonly, copy) NSArray<ObjectType> *allObjects

      返回NSHashTable中的所有数据;


    • @property(readonly, copy) NSSet<ObjectType> *setRepresentation

      NSHashTable转为NSSet的形式;


    • @property(readonly) NSUInteger count

      NSHashTable中元素的数量;


    • - (BOOL)containsObject:(ObjectType)anObject

      给定的对象是否存在在NSHashTable中;

      所使用的相等性比较取决于所选择的选项。 例如,使用NSPointerFunctionsObjectPersonality选项将使用isEqual:方法来判断相等。


    • - (ObjectType)member:(ObjectType)object

      确定NSHashTable是否包含给定的对象,并返回该对象(如果存在),如果不存在返回nil;
      所使用的相等性比较取决于所选择的选项。 例如,使用NSPointerFunctionsObjectPersonality选项将使用isEqual:方法来判断相等。


    • - (NSEnumerator<ObjectType> *)objectEnumerator

      返回包含NSHashTable中所有元素的枚举器对象。
      你可以按照如下方法使用:

        NSEnumerator *enumerator = [myHashTable objectEnumerator];
        id value;
      
        while ((value = [enumerator nextObject])) {
            /* code that acts on the hash table's values */
        }
      

      NOTE:使用快速枚举协议中的方法会更有效;(NSFastEnumeration)

    Manipulating Membership

    • - (void)addObject:(ObjectType)object

      给hashTable添加指定元素;


    • - (void)removeObject:(ObjectType)object

      删除hashTable中的指定元素;


    • - (void)removeAllObjects

      删除hashTable中的所有元素;

    Comparing Hash Tables

    • - (void)intersectHashTable:(NSHashTable<ObjectType> *)other

      从调用该方法的hashTable中删除不是另一个给定hashTable的成员的每个元素。

      所使用的相等性比较取决于所选择的选项。 例如,使用NSPointerFunctionsObjectPersonality选项将使用isEqual:方法来判断相等。


    • - (BOOL)intersectsHashTable:(NSHashTable<ObjectType> *)other

      返回一个布尔值,指示给定的hashTable是否与调用者有交集。


    • - (BOOL)isSubsetOfHashTable:(NSHashTable<ObjectType> *)other

      返回一个布尔值,指示调用者中的每个元素是否也存在于给定的hashTable中。


    • - (BOOL)isEqualToHashTable:(NSHashTable<ObjectType> *)other

      调用者是否与给定的hashTable相等;
      如果两个hashTable的每个成员具有相同数量的成员,并且如果一个hashTable的每个成员存在于另一个hashTable中,则它们相等。

    Set Functions

    • - (void)minusHashTable:(NSHashTable<ObjectType> *)other

      从接收hashTable中删除给定hashTable中的每个元素(如果存在)。


    • - (void)unionHashTable:(NSHashTable<ObjectType> *)other

      将给定hashTable的每个元素添加到接收hashTable(如果不存在)。

    Accessing Pointer Functions

    • @property(readonly, copy) NSPointerFunctions *pointerFunctions

      用于管理hashTable中元素的NSPointerFunctions对象;

    Constants

    • typedef NSUInteger NSHashTableOptions

      位用于指定NSHashTable对象中元素的行为的常量。

      1. const NSPointerFunctionsOptions NSHashTableStrongMemory

        同NSPointerFunctionsStrongMemory

      2. NSHashTableZeroingWeakMemory

        已被弃用,使用NSHashTableWeakMemory代替;

      3. const NSPointerFunctionsOptions NSHashTableCopyIn

        同NSPointerFunctionsCopyIn

      4. const NSPointerFunctionsOptions NSHashTableObjectPointerPersonality

        同NSPointerFunctionsObjectPointerPersonality

      5. const NSPointerFunctionsOptions NSHashTableWeakMemory

        同NSPointerFunctionsWeakMemory。使用NSPointerFunctionsWeakMemory对象引用将在最后一次release时变为NULL。

    参考

    NSHash​Table & NSMap​Table

    相关文章

      网友评论

          本文标题:NSHashTable官方文档阅读

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