Agn*_*kas 3 hash objective-c nsarray
我需要检测NSArray对象中的更改 - 即,是否在NSArray中添加/删除了某些对象,或者只是就地进行了编辑.是否有一些集成的NSArray哈希函数用于此任务 - 或者我需要为NSArray编写自己的哈希函数?也许某人有不同的解决方案 有任何想法吗 ?
所有对象都有一个-hash方法,但并非所有对象都有良好的实现.
NSArray的文档没有定义它的结果,但测试显示它返回数组的长度 - 不是很有用:
NSLog(@"%lu", @[@"foo"].hash); // output: 1
NSLog(@"%lu", @[@"foo", @"bar"].hash); // output: 2
NSLog(@"%lu", @[@"hello", @"world"].hash); // output: 2
Run Code Online (Sandbox Code Playgroud)
如果性能不重要,并且如果数组包含<NSCoding>对象,那么您可以简单地NSData将具有良好-hash实现的数组序列化:
[NSArchiver archivedDataWithRootObject:@[@"foo"]].hash // 194519622
[NSArchiver archivedDataWithRootObject:@[@"foo", @"bar"]].hash // 123459814
[NSArchiver archivedDataWithRootObject:@[@"hello", @"world"]].hash // 215474591
Run Code Online (Sandbox Code Playgroud)
为了获得更好的性能,应该在某处解释如何编写自己的-hash方法.基本上调用-hash数组中的每个对象(假设数组包含可以可靠散列的对象)并将每个对象组合在一起,并使用一些简单的随机数学.
| 归档时间: |
|
| 查看次数: |
2224 次 |
| 最近记录: |