Что ж, довольно сложно устранять ошибки, которые не приводят к сбою приложения, а просто вешают поток. Если вы не можете найти ошибку, посмотрев пошагово проверяя свой код на наличие возможных тупиковых или гоночных условий, я бы посоветовал реализовать некоторую регистрацию.
Запись вашего журнала на диск каждый раз, когда вы добавляете журнал. Это не самый эффективный способ памяти, но если вы дадите сборку с включенным ведением журнала вашему коллеге, вы можете извлечь журнал с его iPhone, когда что-то пойдет не так. Даже когда приложение все еще работает.
Убедитесь, что вы регистрируете каждый ваш шаг, включая значения важных переменных в коде, который вы подозреваете в взломе приложения. Таким образом, вы сможете увидеть, что делает приложение и каково его состояние.
Надеюсь, это немного поможет. Я сейчас не о восстановлении состояния памяти приложения, поэтому не могу помочь с этим.
Примечание; Если приложение выдает ошибку, вы могли бы использовать другие инструменты, но если я правильно понял, это не так, не так ли?
Я прочитал вопрос, описывающий ошибку, и попытался бы записать на диск, что делают выполняющиеся в данный момент операции. Кажется, что операции будут зависать время от времени, и там есть ошибка. Если вы можете записывать, какие методы вызываются во время выполнения операции, это покажет вам, какой вызов функции приведет к зависанию приложения, и вы сможете начать поиск там.