HashBuilder 1.0.3

HashBuilder 1.0.3

测试已测试
语言语言 Obj-CObjective C
许可 NOASSERTION
发布时间最近发布2021年8月

无人认领 维护。



HashBuilder

Build Status Version Platform License

用于从贡献的对象或哈希生成哈希值(可能是对象上的属性,应在实现isEqual:时考虑)。目的是从NSObject的- (NSUInteger)hash方法的重写中返回哈希结果。

安装

如果您使用的是CocoPods,只需将其添加到您的Podfile中即可。

pod 'HashBuilder', '~> 1.0'

否则,只需将HashBuilder子目录的内容添加到项目中。

文档

要使用它,创建一个HashBuilder对象,向其中添加贡献,然后查询'builtHash'属性以获取结果哈希。

- (NSUInteger)hash
{
	HashBuilder *builder = [HashBuilder builder];

	[builder contributeObject:self.objectID];
	[builder contributeObject:self.occurredDate];
	[builder contributeObject:self.type];
	[builder contributeObject:self.objectURL];
	[builder contributeObject:self.tags];
	[builder contributeObject:self.count];

	NSUInteger retVal = builder.builtHash;

	return retVal;
}

务必在重写您的- (BOOL)isEqual:(id)object方法时考虑相同的属性。

注意:贡献顺序将产生影响哈希结果,即使贡献了相同的值也是如此。例如

HashBuilder *builder1 = [HashBuilder builder];
[builder1 contributeObject:@"a"];
[builder1 contributeObject:[NSNumber numberWithInteger:12345]];
NSUInteger hash1 = builder1.builtHash;

HashBuilder *builder2 = [HashBuilder builder];
[builder2 contributeObject:[NSNumber numberWithInteger:12345]];
[builder2 contributeObject:@"a"];
NSUInteger hash2 = builder2.builtHash;

hash1 != hash2

免责声明和许可协议

  • 本作品采用了Mike Ash在其题为《Implementing Equality and Hashing》的博客文章中提出的技巧和概念。
  • 本作品受Creative Commons Attribution 3.0 Unported License许可。请参见包含的LICENSE.txt文件以获取完整详情。

关于

我是一名iOS工程师,白天从事专业工作,名叫Levi Brown。我是一位技术博客作者,我的博客是grokin.gs,可通过以下方式联系我:

Twitter @levigroker
电子邮件 [email protected]

欢迎您提出宝贵的意见和建议。