Objective中的 ==和isEqual ,hash方法
2018-11-05 本文已影响7人
笙绳省盛
1.对于基本类型 ==运算符表示的是值是否相同,对于对象类型,==运算符表示的是对象的地址是否相同(表示是否是同一个对象)。
2.isEqual可以判断2个对象是否相同。
3.hash方法只在对象被添加至NSSet和设置为NSDictionary的key时会调用
NSSet添加新成员时, 需要根据hash值来快速查找成员, 以保证集合中是否已经存在该成员
NSDictionary在查找key时, 也利用了key的hash值来提高查找的效率
hash方法主要是用于在Hash Table查询成员用的
hash值是对象判等的必要非充分条件
4.集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址;不过NSArray是有序的集合,NSSet是无序的集合。
集合是一种哈希表,运用散列算法,查找集合中的元素比数组速度更快,但是它没有顺序。