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

Ios 一次性获取钥匙链中的所有项目?,ios,keychain,keychainitemwrapper,Ios,Keychain,Keychainitemwrapper,我开始阅读这个苹果的keychain示例,了解到他们正在获取与kSecAttrGeneric类型相关联的这个keychain项目的所有值。然后,当有人试图搜索一个键时,他们会从缓存的值中进行搜索,这是正确的方法吗?我不知为什么觉得这种预取方法是不正确的 你能告诉我为什么要从keychain预取所有数据,而不是根据需要直接从keychain访问数据吗 这与效率有关。从磁盘读取是昂贵的,因此,如果要多次读取钥匙链,则将整个钥匙链读入,然后在内存中进行挖掘,效率会更高。我相信您对该示例有点误读。在Ge

我开始阅读这个苹果的keychain示例,了解到他们正在获取与kSecAttrGeneric类型相关联的这个keychain项目的所有值。然后,当有人试图搜索一个键时,他们会从缓存的值中进行搜索,这是正确的方法吗?我不知为什么觉得这种预取方法是不正确的

你能告诉我为什么要从keychain预取所有数据,而不是根据需要直接从keychain访问数据吗


这与效率有关。从磁盘读取是昂贵的,因此,如果要多次读取钥匙链,则将整个钥匙链读入,然后在内存中进行挖掘,效率会更高。

我相信您对该示例有点误读。在GenericKeychain中,它们并没有获取“所有项”。它们只获取一个项及其一个值。钥匙链项目由半公共属性和受保护的“值”组成。读取钥匙链的费用非常昂贵(比从磁盘上读取文件慢得多,慢得惊人)。所以这个例子就是避免在不需要的时候重读它。但它并没有读取整个钥匙链;只有一项存储数据。

安全吗?!?我记得读过关于访问钥匙链的文章,比如只在设备解锁时才打开钥匙链等,如果我们这样做,我们会错过这些功能,对吗?!?