У меня есть несколько потоков, выполняющих тяжелую работу, в то время как мой основной поток обрабатывает пользовательский интерфейс. Время от времени обратный вызов потоков в основной поток обновляет индикатор выполнения.
В общем, это не так стабильно. Я исправил проблемы, связанные с логикой, но одна из них не устранена. У меня есть некоторый код, который действует как кнопка остановки, а это означает, что поток не будет пытаться обновляться в следующий раз, когда будет проверять, что происходит.
Иногда, когда я нажимаю кнопку остановки, я получаю эту ошибку:
- [NSRunLoop isEnabled]: нераспознанный селектор отправлен в экземпляр ...
Кажется, это происходит, если я нажимаю кнопку остановки в конце рабочей фазы потока. В течение этого времени ничего особенного, кроме:
- Освободить часть памяти OpenGL
- Вызвать последний метод в главном потоке
- Слить свой пул автозапуска
- и возврат
Но, честно говоря, сообщение об ошибке слишком загадочно, чтобы я даже не знал, с чего начать. Может кто-нибудь пролить свет на NSRunLoop, каким может быть этот метод isEnabled, или на общее представление о том, что может пойти не так?