Я пишу тестовое приложение, которое включает в себя "тяжелый" доступ к цепочке для ключей с добавлением и удалением элементов цепочки для ключей с различными атрибутами управления доступом и разными типами элементов.
Это приложение очень простое - имеет текстовую область, которая служит журналом того, что пишется и удаляется; кнопка, которая запускает запуск тестов. Приложение имеет только 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")
...
}