zoukankan      html  css  js  c++  java
  • NSHashTable NSPointerArray

    NSHashTable和NSMapTable能够对持有的对象做strong或weak存储,弱持有weak引用对象,当weak对象释放后会自动从表中移除     http://blog.csdn.net/jijunyuan/article/details/39962923

    NSHashTable/NSSet:  (都是数组且无序)(NSPointerArray有序)

    • NSSet/NSMutableSet 对其对象是强引用,使用isEqual方法去检查对象是否相等,使用方法hash去获取hash值。
    • NSHashTable是可变的,没有一个不变的和其对应。
    • NSHashTable 可以对其对象是weak 引用。
    • NSHashTable 可以在输入(加入)的时候 copy 对象。
    • NSHashTable 可以包含任意指针,使用指针去做相等或者hashing检查。
    • NSHashTable使用一个option去初始化,下面是可用的选项:
    • NSHashTableStrongMemory:和 NSPointerFunctionsStrongMemory相同,使用此选项为默认的行为,和NSSet的内存策略相同。
    • NSHashTableWeakMemory:和 NSPointerFunctionsWeakMemory相同,此选项使用weak存储对象,当对象被销毁的时候自动将其从集合中移除。
    • NSHashTableCopyIn :和 NSPointerFunctionsCopyIn 相同,此选项在对象被加入到集合之前copy它们。
    • NSHashTableObjectPointerPersonality:和NSPointerFunctionsObjectPointerPersonality相同,此选项是直接使用指针进行isEqual:和 hash。

    NSMapTable相对于NSDictionary

    • NSMapTable和NSDictionary相对应,相对于NSDictionary/NSMutableDictionary,NSMapTable有如下的特征:
    • NSDictionary/NSMutableDictionary会copy对应的key,强引用相应的value。
    • NSMapTable是可变的,没有一个不变的类与其对应。
    • NSMapTable 可以对其 key和 value弱引用,在这种情况下当key或者value被释放的时候,此entry会自动从NSMapTable中移除。
    • NSMapTable 在加入一个(key,value)的时候,可以对其value设置为copy。
    • NSMapTable可以包含任意指针,使用指针去做相等或者hashing检查。
    • 下面的NSMapTable例子中,key不是copy的(强引用的),value为弱引用。

    NSMapTable对象在初始化的时候使用options去分别指定keys和values的行为。NSMapTableStrongMemory:指定对应的key或者value为强引用。NSMapTableWeakMemory:指定对应的key或者value为弱引用。 NSMapTableCopyIn:指定对应的key或者value在加入到集合中的时候为copy。NSMapTableObjectPointerPersonality:此选项是直接使用指针进行isEqual:和 hash 。

     NSPointerArray  能存储C字符串

    它指定了一个和 NSArray 类似的接 口但是支持插入空值和任意指针 

  • 相关阅读:
    WP7 操作XML文件
    C#和C/C++指针实现swap交换
    感受
    我学到了什么 我思考了什么.
    hdu 2768 Cat vs. Dog (最大独立)
    hdu 1960 Taxi Cab Scheme (最小覆盖)
    hdu 1528 Card Game Cheater (最小覆盖)
    hdu 4160 Dolls (最大独立)
    hdu 2458 Kindergarten (最大独立集)
    hdu 2119 Matrix (最小覆盖)
  • 原文地址:https://www.cnblogs.com/yeng/p/7133310.html
Copyright © 2011-2022 走看看