max*_*ax_ 6 hash cocoa-touch objective-c
偶尔,当我向下看一个对象响应的选择器列表时,我看到hash了.有一段时间了,我想知道这意味着什么,但我从来没有找到过.
如果您能告诉我选择器的作用以及这样做的常见用途,我将非常感激.
它计算对象的哈希值,这在HashTables中特别有用,比如将对象用作对象的键NSDictionary.
对象hash必须具有以下属性:
NSDictionary查找的性能就越好.有关更多信息,请阅读hash定义 此方法的NSObject协议文档.
例如,hash字符串的函数可以是此字符串的字符数,或其字符的ascii代码的总和,或类似的任何内容.
当你搜索一个给定的密钥时NSDictionary,一个解决方案是将搜索到的密钥与字典中的所有其他密钥进行比较,这需要循环通过所有密钥并调用isEqual每个密钥,这将花费很长时间,如果这本词典有很多条目.因此,Cocoa将计算搜索到的键的哈希值,并将其与字典中键的所有(预先计算的)哈希值进行比较.
这样更有效,因为它只需要在NSUInteger值之间进行比较,即使NSDictionary是NSStrings或其他对象的键,所以这真的更快.一旦找到与搜索到的密钥的哈希具有相同哈希的密钥,它就可以通过这个哈希循环所有密钥,并通过调用将它们与搜索到的密钥进行比较isEqual,但是在这个阶段将会有更少的密钥循环直播(如果密钥的散列真的是唯一的,甚至可能只有一个)
| 归档时间: |
|
| 查看次数: |
5996 次 |
| 最近记录: |