Для поиска сообщение об ошибке:
Это приложение модифицирует механизм автозапуска из фонового потока, что может привести к повреждению двигателя и странным сбоям. Это приведет к исключению в будущей версии.
Я знаю, что это означает, что некоторый код UIKit вызывается из фонового потока, и я знаю, что решение состоит в том, чтобы обернуть код в
dispatch_async(dispatch_get_main_queue(), ^(void){ <code> });
Моя проблема заключается в поиске, где это сделать, поскольку ни одна из трассировок печатного стека не ссылается на мой код приложения. Мои доказательства, подтверждающие это отрицание, - это поиск (command-f) в окне вывода отладки для имени моего приложения; У меня осталось 24 стека, и мое имя приложения не принадлежит ни одному из них, кроме верхнего сообщения с сообщением об ошибке. Я могу опубликовать один из них, но это не очень полезно.
В тех случаях, над которыми я работаю сегодня, это происходит при переходе к контроллерам представлений после viewWillDisappear()
и до viewWillAppear()
. Я нашел части моего кода, чтобы обернуть dispatch_async()
, но все они обрабатываются сейчас. У меня есть точки останова и отладочные сообщения, где объекты, относящиеся к контроллерам представления, распределяются и освобождаются, и все они запускаются после появления сообщений об исключениях. Это происходит как на симуляторе, так и на моем iOS9 iPhone, как в режимах отладки, так и в режиме выпуска.
Как я могу определить код фона, который, по-видимому, изменяет пользовательский интерфейс?