Если я правильно понимаю, UIView можно редактировать только из основного потока, потому что мы хотим избежать проблем с синхронизацией. Тогда почему, когда вызывается из вторичной нити, она иногда работает, а иногда нет? (скажем, я хочу изменить цвет фона ... он работает примерно каждые 40 секунд). Почему он не работает, и все же он не вызывает никаких ошибок?Почему манипуляция UIView на вторичном потоке не вызывает ошибку?
0
A
ответ
1
Метод UIKit (скорее всего) не проверяет, какой поток они выполняют. Если вы вызываете эти методы в другом потоке, вы получаете неопределенное поведение. То, что он работает «иногда», не является доказательством обратного - вместо этого очевидно, что вы получаете именно это: неопределенное поведение.
Смежные вопросы
- 1. Почему не объект, используемый во вторичном потоке получить собранные
- 2. JNI GetMethodID вызывает ошибку в родном потоке
- 3. Почему "{} || {}" вызывает синтаксическую ошибку?
- 4. Почему функция MediaRecorder не вызывает ошибку ANR?
- 5. Почему это вызывает ошибку?
- 6. Почему это вызывает ОШИБКУ?
- 7. Добавление градиента к UIView вызывает ошибку
- 8. Почему .val() вызывает ошибку?
- 9. почему _vsnprintf вызывает ошибку
- 10. Почему это вызывает ошибку?
- 11. Можно ли запускать триггеры WPF на вторичном потоке?
- 12. UIView внутри другого UIView не вызывает методы
- 13. Почему этот подзапрос НЕ вызывает ошибку?
- 14. Почему переопределение переменной не всегда вызывает ошибку?
- 15. Почему этот код вызывает ошибку?
- 16. Почему printf вызывает ошибку сегментации?
- 17. Почему это выражение не вызывает синтаксическую ошибку?
- 18. Почему запятая (,) не вызывает ошибку компиляции?
- 19. Почему не вызывает неопределенную ошибку тигра?
- 20. Почему моя категория UIView вызывает предупреждения?
- 21. Почему SuppressFormsAuthenticationRedirect вызывает ошибку сборки?
- 22. Почему это выражение вызывает ошибку?
- 23. PHP не вызывает ошибку
- 24. Почему этот код вызывает ошибку?
- 25. Почему ftp_rename вызывает ошибку php
- 26. Почему этот код вызывает ошибку?
- 27. Почему метод getPrototype вызывает ошибку?
- 28. Почему это вызывает ошибку рекурсии
- 29. Почему WPF MediaElement не работает на вторичном мониторе?
- 30. Почему эта функция вызывает ошибку?
ОК, теперь я понимаю :) Не могли бы вы объяснить, как могло возникнуть это неопределенное поведение? то почему это происходит в этом случае? Может быть, из-за какого-то состояния гонки? – Novellizator
@ Новеллизатор Да, это связано с расчетом данных и другими явлениями, возникающими при одновременном доступе нескольких потоков к объектам UIKit. – CouchDeveloper