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 类似的接 口但是支持插入空值和任意指针

NSHashTable NSPointerArray的更多相关文章

  1. Cocoa 集合类型:NSPointerArray,NSMapTable,NSHashTable

    iOS 中有很多种集合类型,最为常见的可能就 NSArray.NSDictionary.NSSet,但其实还有 NSPointerArray.NSMapTable.NSHashTable 等类型,虽然 ...

  2. NSMapTable、NSHashTable与NSPointerArray的封装

    NSMapTable.NSHashTable与NSPointerArray的封装 说明 NSMapTable对应NSDictionary:NSHashTable对应NSSet:NSPointerArr ...

  3. 捉襟见肘之NSMutableSet和NSPointerArray

    用来学习复习记录,其他优秀的译文,点击这里 一.NSMutableSet NSMutableSet和NSMutableArray存放数据方式分别是无序和有序,这说明,数组是可以通过index获取对象. ...

  4. NSHashtable and NSMaptable

    本文转自Nidom的博客,原文:<NSHashtable & NSMaptable>   NSSet, NSDictionary, NSArray是Foundation框架关于集合 ...

  5. ios NSHashTable & NSMapTable

    在ios开发中大家用到更多的集合类可能是像NSSet或者NSDictionary,NSArray这样的.这里要介绍的是更少人使用的两个类,一个是NSMapTable,另一个是NSHashTable. ...

  6. 【转】NSHashtable and NSMaptable

    本文转自Nidom的博客,原文:<NSHashtable & NSMaptable>   NSSet, NSDictionary, NSArray是Foundation框架关于集合 ...

  7. NSHashTable 和 NSMapTable学习

    今天,在实现play gif时间功能,我看见两个陌生班,只需看看这个纪录: NSSet和NSDictionary是两个经常使用的类,可是他们默认假定了当中对象的内存行为.对于NSSet.object是 ...

  8. 使用NSHashTable存储引用对象

    NSHashTable 我们使用集合(NSArray,NSMutableArray,NSDictionary,NSMutableDictionary,NSSet,NSMutableSet)存储对象时会 ...

  9. 速查 NSArray NSSet NSHashTable 快速遍历之速度比较

    因为NSArray中的指针并不是简单的连续存放的,所以简单的测试了Cocoa的三种集合的快速遍历(NSFastEnumeration)性能,给出简单的参考. 添加元素: [collection add ...

随机推荐

  1. centos7-jdk快速安装

    安装之前先检查一下系统有没有自带open-jdk 命令: rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj 如果没有输入信息表示没有安装. ...

  2. 笔记react router 4(一)

    用过react router4.X的小伙伴一定知道,比起3.X的版本,router的使用上有了很大的改变. 首先,我们只需要安装 react-router-dom 即可使用.看到“dom”想必你就该知 ...

  3. leetcode-algorithms-16 3Sum Closest

    leetcode-algorithms-16 3Sum Closest Given an array nums of n integers and an integer target, find th ...

  4. Spring ApplicationListener使用方法及问题

    使用场景 在一些业务场景中,当容器初始化完成之后,需要处理一些操作,比如一些数据的加载.初始化缓存.特定任务的注册等等.这个时候我们就可以使用Spring提供的ApplicationListener来 ...

  5. Convex Fence

    Convex Fence I have a land consisting of n trees. Since the trees are favorites to cows, I have a bi ...

  6. .NET面试基本问题

    1..NET和C#的区别? .NET:一般指的是.NET FrameWork框架,是平台,技术. C#:是一编程语言,是基本.NET平台. 2.C#的委托是什么?事件是不是委托? 委托可以把一个方法作 ...

  7. java中super和this的使用

    要说super就先要说this."this",作为一个特殊的关键字,它的规则如下: 1.可以表示构造函数传递.this(a,b)表示调用另外一个构造函数.这里面的this就是一个特 ...

  8. Scheduler & Task & Worker & Thread & Request & Session & Connection of SQL Server

    MSSQL一直以来被人们认为简单.好学,但等到大家掌握了入门操作,深入理解起来又觉得非常的“拧巴”,尤其是对用惯了Oracle的同学来说,究其根本原因,无非是MSSQL引入和暴露了太多的概念.细节和理 ...

  9. ActiveMQ 的连接和会话

    要了解 connection 和 session 的概念,可以先从 ConnectionState 和 SessionState 入手: // 省略部分代码 public class Connecti ...

  10. Linux Shell获取系统资源使用百分比(CentOS)

    CPU使用率: top -b -n | | 内存使用率: free -m | grep '^-' | awk '{print $3/($3+$4)*100"%"}' IO使用率(F ...