Я полагаю, это связано с тем, что многопоточность не очень совместима с UIWebView.
Вы должны использовать NSOperationQueue
или GCD для стека ваших вызовов stringByEvaluatingJavaScriptFromString
, чтобы они выполнялись асинхронно в фоновом режимено по-прежнему выполняйте их в основном потоке (используйте dispatch_get_main_queue()
или performSelectorOnMainThread:
и т. д.).
Если в многопоточности нет реальной проблемы, вы также можете просто вызвать stringByEvaluatingJavaScriptFromString
напрямую (зачем создавать поток?Вы все равно можете вызывать метод несколько раз, даже если вы хотите передавать строки отдельно, не так ли?)
Вы также можете попробовать использовать performSelector:withObject:afterDelay:
(с задержкой 0 или 0,01), чтобы вызовбудет выполняться во время следующей итерации runloop.
В общем, если вам не нужно их использовать, избегайте использования потоков (см. «Руководство по программированию параллелизма» и «Руководство по программированию потоков»)информация в доку Apple).Предпочитайте использовать асинхронные методы, когда они существуют, затем NSOperationQueues или GCD (и только если у вас нет другого решения, вы можете использовать NSThreads).Это связано с тем, что более высокие API будут управлять сложными задачами и уменьшать сложность при работе с многопоточностью.