首页 理论教育 深入了解Objective-C中的isEqual和hash方法

深入了解Objective-C中的isEqual和hash方法

时间:2026-01-23 理论教育 懓樺 版权反馈
【摘要】:NSObjectProtocol中值得一提的是isEqual和hash方法,在Objective-C中它们是一个实例进行相等和同一判断的基础。重写isEqual方法之后可以对自定义的类型进行是否相等的判断,hash则可以用作字典或者集合中标识实例的一个数值。结合NSObjectProtocol和NSObject,我们可以简单地实现打印和相等的判断,示例如下:动手写7.8.1 NSObject继承自NSObject类的自定义类,如果覆写了description方法,那么在print时会自动将description的返回打印出来。

在Objective-C的世界里,NSObject是所有类的基类,如果要将Swift和Objective-C混合进行iOS的开发,有时候会不可避免地需要声明继承自NSObject的类。这个基类是满足NSObjectProtocol协议的,所以提供了很多属性和方法。读者可以通过查看NSObject的定义找到NSObjectProtocol。源码定义如下:

这里需要读者先认识一个符号——“`”,在Swift或者Objective-C的世界中,如果方法或者变量使用了关键字,可以使用“`”符号括起来,那么在使用时就可以按定义的名称使用,不过本书还是建议读者不要用关键字作为方法或者变量的名字。NSObjectProtocol中值得一提的是isEqual和hash方法,在Objective-C中它们是一个实例进行相等和同一判断的基础。重写isEqual方法之后可以对自定义的类型进行是否相等的判断,hash则可以用作字典或者集合中标识实例的一个数值。而NSObject本身也提供了一些属性和方法,源码定义如下:

这里需要读者先认识一个符号——“`”,在Swift或者Objective-C的世界中,如果方法或者变量使用了关键字,可以使用“`”符号括起来,那么在使用时就可以按定义的名称使用,不过本书还是建议读者不要用关键字作为方法或者变量的名字。NSObjectProtocol中值得一提的是isEqual和hash方法,在Objective-C中它们是一个实例进行相等和同一判断的基础。重写isEqual方法之后可以对自定义的类型进行是否相等的判断,hash则可以用作字典或者集合中标识实例的一个数值。而NSObject本身也提供了一些属性和方法,源码定义如下:

继承自NSObject类的自定义类,如果覆写了description方法,那么在print时会自动将description的返回打印出来。结合NSObjectProtocol和NSObject,我们可以简单地实现打印和相等的判断,示例如下:

动手写7.8.1 NSObject(https://www.xing528.com)

继承自NSObject类的自定义类,如果覆写了description方法,那么在print时会自动将description的返回打印出来。结合NSObjectProtocol和NSObject,我们可以简单地实现打印和相等的判断,示例如下:

动手写7.8.1 NSObject

控制台输出如下:

控制台输出如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈