2014-08-28 91 views
0

我开始阅读这个钥匙串的苹果示例,并且明白它们正在获取与此类型的kchacAttrGeneric关联的钥匙串项目的所有值。然后,当有人试图搜索一个密钥,他们会形成缓存的值,这是正确的方法,我觉得这种预取方式是不正确的。一次性获取钥匙串中的所有物品?

您能否让我知道预取钥匙串中的所有数据的原因,而不是直接从钥匙串中根据需要访问它。

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

回答

1

我相信你稍微误读了这个例子。在通用密钥链中,他们没有获取“所有项目”。他们只提取一个项目和一个值。钥匙链项目由半公开的属性和受保护的“值”组成。从钥匙链中读取出来的代价非常昂贵(比从磁盘读取文件要慢得多,速度真的很慢)。所以这个例子避免在不需要时重新读取它。但它并没有读完整个钥匙链;只是存储其数据的一个项目。

+0

是的,你是对的,我得到你,感谢澄清 – thndrkiss 2014-08-29 00:40:04

1

它有效率的事。从磁盘读取代价很高,因此如果您要多次读取钥匙串,那么读取整个钥匙串,然后在内存中进行查找效率会更高。

+0

安全吗?!?我记得阅读关于钥匙链的访问,例如只有在设备解锁等情况下才能打开它,如果我们这样做,我们会错过这些功能?!? – thndrkiss 2014-08-29 00:07:16