一次性获取钥匙串中的所有项目?

时间:2014-08-28 19:00:24

标签: ios keychain keychainitemwrapper

我开始阅读这个用于钥匙串的苹果样本,并了解他们正在获取与键入kSecAttrGeneric关联的此钥匙串项的所有值。然后当有人试图搜索一个密钥时,他们就会形成缓存的值,这是正确的方法,我觉得这种预取方式是不正确的。

您能告诉我从钥匙串中取出所有数据的原因,而不是根据需要直接从钥匙串访问它。

https://developer.apple.com/library/ios/samplecode/GenericKeychain/Introduction/Intro.html

2 个答案:

答案 0 :(得分:1)

这与效率有关。从磁盘读取是很昂贵的,所以如果您要多次读取钥匙串,那么读取整个钥匙串,然后在内存中挖掘它会更有效。

答案 1 :(得分:1)

我相信你会略微误读这个例子。在GenericKeychain中,他们并未提取所有项目。"他们只获取一个项目及其一个值。钥匙串项目由属性组成,这些属性是半公开的,并且是一个"值"这是受保护的。读出钥匙串非常昂贵(比从磁盘读取文件要慢得多;它的速度非常慢)。因此,示例是避免在不需要时重新读取它。但它并没有阅读整个钥匙链;只是存储其数据的一个项目。