iOS中的钥匙串是否是线程安全的?

12

我希望使用 "secitemadd" 将一些项目添加到钥匙串中,但首先需要知道它是否线程安全。

我已阅读了来自苹果的文档,但无法找到任何地方说明它是否线程安全。


2
我很惊讶这方面的文档如此之少。我想根据缺乏文档和在SO上提出的问题,API可能是线程安全的。 - Rory McKinnel
2个回答

19
在另一份文件中,苹果公司表示它是线程安全的。
并发性考虑:在iOS上,此API中的所有函数都是线程安全和可重入的。
请参见证书、密钥和信任服务参考

1
Quinn在这篇论坛帖子中更深入地解释了Keychain中的并发性,对于任何研究此问题的人可能会感兴趣:https://developer.apple.com/forums/thread/117092?answerId=361922022#361922022 - Mac_Cain13

0

Keychain 不是线程安全的。如果我们尝试检索 Keychain 信息,实际上有时会返回 -25300。请小心。


1
“-25300” = errSecItemNotFound 是为了帮助读者理解;但是这个答案只是部分正确的——被接受的答案才是正确的。macOS和iOS是不同的。在这里,问题明确说明了是_iOS_,因此这个答案是不正确的。 - Mark
可能会有其他原因导致类似的结果代码,这一点值得注意(请参考此处:https://stackoverflow.com/questions/32721826/keychain-error-25300-errsecitemnotfound-when-disabling-and-re-enabling-touch)。 - Mark
@Mark 和什么?关于线程保存的问题。不涉及-25300的任何其他原因。 - Vyacheslav
@Vyacheslav 阅读 此文档 - Alhomaidhi
@Vyacheslav 苹果文档中指出:“在iOS中,该API中的所有函数都是线程安全且可重入的。”这是安全框架中的一部分,而钥匙链也是该框架的一部分。我已经在上面发布了链接。这是苹果文档的链接。请问您的参考资料是什么? - Alhomaidhi
@Alhomaidhi 我遇到了这个问题,这不是正确的。 - Vyacheslav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接