Effetive Objective - C 1.Objective8.;理解对象等同性

本文介绍了Objective-C中如何使用NSObject协议的isEqual和hash方法来判断对象等同性,并讨论了自定义等同性判断方法的重要性及实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OC 的对象都是指针类型  不能直接 p1 == p2 判断两个对象是够相等


NSObject 协议有两个关键方法判断等同性:

-isEqual 

-(nsuinteger)hash

重写这两个方法是要遵守约定:对象相等 -> 则 hash值一定相等      hash相等  对象不一定相等


当对象存放到 hash结构的集合中时  集合会根据对象的hash值查找对象要 放置的位置  这样速度比较快一些


已经存入集合中的对象的hash不要改变  因为hash的值和对象存放的位置有关   但是如果已经存入的对象的hash值改变了 结合是不会动态的调整对象的位置的 此时对象存放的位置就是错误的 会导致一些bug



如果经常进行等同判断的话  那么就要定义自己的等同判定方法  因为这样可以省略了对对象类型的验证  效率更高  

同时也要重写isEqual方法  让其想进行类型验证在调用 我们自定义的判定方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值