iOS / Cocoa:使用URL作为NSDictionary中的键

时间:2011-04-23 09:55:01

标签: caching nsdictionary nsurl

对于我正在处理的应用程序,我有一个类来处理发送到Web服务的请求。为了减少流量负载,我想缓存大部分请求及其结果(至少对于不会经常更改的内容)。请求由使用的URL唯一标识,因此我想将URL用作密钥。

在我之前的一个项目中,我曾经创建了一个URL的md5哈希作为一个键。我开始想知道这种方法有多安全,因为显然有两个不同的URL产生相同的散列值。

任何人都可以建议更安全的方法,还是应该坚持使用URL的md5哈希作为缓存字典中的密钥?

2 个答案:

答案 0 :(得分:2)

只需使用NSMutableDictionary,将URL(作为NSString s)用于字典键。 NSDictionary(和NSMutableDictionary)几乎肯定会在内部使用某种哈希表实现,但它们会处理任何哈希重复问题。如果你给它一个唯一的密钥,它将正确存储它。

除非您确定NSMutableDictionary对于您的需求太慢(几乎肯定不会),否则您不必担心散列,碰撞或类似的事情。只需使用唯一键(URL)将数据粘贴到字典中。

答案 1 :(得分:0)

首先,我建议查看URL加载系统编程指南的Understanding Cache Access章节。

如果这还不够,我会坚持使用md5作为关键。我认为您不会将您的应用程序的任何漏洞暴露给潜在的攻击者。怎么可能有害?