当UIWebView试图阻止锁定Web线程时,避免主线程冻结

Jak*_*čar 7 iphone cocoa-touch uiwebview

所有UIWebView共享一个Web线程.

当其中一个init被从超级视图等中删除时,它们将尝试以阻塞方式从主线程锁定Web线程,从而暂时冻结主线程的运行循环.

如果Web线程忙,例如在执行长同步时XMLHttpRequest,这可能会长时间阻塞主线程.

有办法避免这种情况吗?

如果我可以修改UIWebView,我只是让锁定尝试不阻塞,但显然情况并非如此,所以我正在寻找其他聪明的想法.

rpe*_*ich 6

长期和短期的是:避免做任何阻止网络线程的时间显著量(window.alert,window.prompt,XMLHttpRequest.open('GET', url, false),可能还有其他人)

此外,避免调用锁定Web线程的方法,然后立即执行需要很长时间的操作,因为一旦控件返回到运行循环,Web线程才会被解锁.(示例:调用-[UITextView setText:]然后在主线程上同步读取文件)