【发布时间】:2020-04-19 22:45:16
【问题描述】:
我正在编写一个测试应用程序,其中涉及“大量”钥匙串访问,其中包括添加和删除具有不同访问控制属性和不同项目类型的钥匙串项目。
这个应用程序非常简单 - 有一个文本区域,可作为写入和删除内容的日志;触发运行测试的按钮。该应用程序只有 1 个 ViewController 类,该类具有按钮的 IBAction 方法。此方法包含读取/删除钥匙串项的所有代码。
我的问题是,如果从 XCode 启动应用程序运行良好 - 当单击按钮时,我会收到 TouchID 的钥匙串提示,一切看起来都很好。但是,当我从 Springboard 启动应用程序并单击按钮时,我会收到钥匙串提示,但应用程序会在几秒钟后崩溃。检查日志显示原因是“场景更新看门狗违规:已用完 10.00 秒的实时余量”。
我做错了什么以及从 XCode 启动与用户启动它有何不同?
显然,我不是一位经验丰富的开发人员,希望得到一些帮助/指向正确方向的指示。
编辑添加代码:valet.set() 或 seceureValet.set() 正在进行中。
@IBAction func keychainItemsTest() {
log.text += "Starting read/write..."
valet.removeAllObjects()
secureValet.removeAllObjects()
log.text += "Adding value test1 to keychain"
valet.set(string:"test1", forKey:"test1")
...
}
【问题讨论】: