Начнем с того, что это , а не проблема, вызванная доступом к сети в главном потоке (по крайней мере, не доступ к сети, которой вы управляете).Метод UIWebView, вызываемый в главном потоке, называется loadHTMLString: baseURL:, который просто вставляет указанную строку в веб-представление как его HTML-содержимое.Содержимое указанной HTML-строки подразумевает сетевой запрос к YouTube, но это не создает инициируемый пользователем сетевой запрос в главном потоке, как щелчок по ссылке в веб-представлении.
Любое предложениевыполнять эту операцию в фоновом потоке неправильно и почти наверняка приведет к сбою.Любое взаимодействие с веб-представлением должно быть в основном потоке;iOS выдаст ошибку сбоя даже для создания экземпляра веб-представления в фоновом потоке.
К сожалению, в этом и заключается проблема, с этой задержкой вы ничего не можете сделать.Когда UIWebView видит тег <embed>
в указанном HTML и определяет, что контент должен поступать с YouTube, он запускает собственный проигрыватель YouTube для воспроизведения видео.Задержка может быть вызвана временем, которое требуется нативному плееру для запуска, оно может быть вызвано тем, что нативный игрок связывается с YouTube, оно может быть вызвано гномами, которые живут в подвале нативного плеера.Я не знаю причину, и, поскольку нативный проигрыватель является совершенно непрозрачным процессом (если не считать джейлбрейка устройств и использования некоторых библиотек с дизассемблером), у меня нет хорошего предложения, как это выяснить.Даже если бы вы узнали, вы почти наверняка ничего не могли бы с этим поделать.
Я ценю, что это неудовлетворительный ответ, и я был бы рад, если бы кто-то доказал мою неправоту.