RSA的加解密算法里用到keychain的一些操作,比如:
这个 “SecItemAdd” 方法,绝大部分时间都是执行正确的,但在iOS 8.4.1系统偶尔会添加失败,status的值为: -34018(errSecMissingEntitlement)
经过分析,是iOS系统的一个bug,当app频繁的从钥匙串请求数据的时候就会造成这种问题,所以尽量减少对keychain的访问,一个解决办法是:在内存中缓存这个值
以下是来自苹果官方回复:
我们终于能够在ios8.3里重现-34018错误,这是我们查找问题根源和修复问题的第一步。
可是,我们并不能给出确切的解决时间,但是由于已经影响了很多的开发者,我们也非常希望尽快解决。
作为变通方案,我建议在在didFinishLaunchingWithOptions 和applicationDidBecomeActive: 两个方法之前添加一个小的延时给获取字符串争取一点时间。然而,好像并没有明显的作用,这就意味着除了重启app确实没有更好的解决方法。
参考: http://www.she.vc/article/18-120660-0.html