ios - UIWebView 在 AJAX 中加载内容会阻塞主线程

标签 ios objective-c uiwebview

我在加载页面的模式 viewController 中使用 webview。该页面最多可能需要 10 秒才能以 AJAX 加载其内容。

如果在页面完全加载后关闭模态 viewController,一切看起来都很好。但是,如果我在加载页面时关闭模态 viewController,则 UI 将完全锁定。我在 UI 锁定时暂停了调试,这是主线程中发生的事情:

Thread 1, Queue : com.apple.main-thread
#0  0x390b6fa8 in __psynch_mutexwait ()
#1  0x3911bf50 in _pthread_mutex_lock ()
#2  0x366ac60c in _WebTryThreadLock(bool) ()
#3  0x366ad434 in WebThreadLock ()
#4  0x31151cf8 in -[UIWebView dealloc] ()
#5  0x30f2f9b2 in -[UIView dealloc] ()
#6  0x30f2f9b2 in -[UIView dealloc] ()
#7  0x38b04022 in (anonymous namespace)::AutoreleasePoolPage::pop(void*) ()
#8  0x2e6de1c8 in _CFAutoreleasePoolPop ()
#9  0x2e773e82 in __CFRunLoopRun ()
#10 0x2e6de470 in CFRunLoopRunSpecific ()
#11 0x2e6de252 in CFRunLoopRunInMode ()
#12 0x334182ea in GSEventRunModal ()
#13 0x30f93844 in UIApplicationMain ()
#14 0x00017074 in main at /Users/.../main.m:16

UI 卡住大约 10 秒,这是页面需要加载的确切时间。

我尝试在关闭模态视图 Controller 之前调用 [_webview stopLoading] 但它没有帮助。

有谁知道这里发生了什么以及我应该怎么做才能防止 webview 卡住 UI?谢谢

最佳答案

在 View Controller 上调用 dismiss 之前,尝试在 UIWebView 上调用 -stopLoading。

文档: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIWebView_Class/#//apple_ref/occ/instm/UIWebView/stopLoading

关于ios - UIWebView 在 AJAX 中加载内容会阻塞主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21701457/

相关文章:

objective-c - 如何在特定标签栏上打开应用程序? iOS Objective-C

iPhone 4 在 Web View 中将 JSON 字符串传递给 Javascript

ios - 获取在 QLPreview Controller 中显示的 PDF 的尺寸

iphone - self.navigationItem.rightBarButtonItem 与 self.navigationController.navigationItem.rightBarButtonItem

c# - 在 iOS 中使用 .NET 和 Objective-C 创建聊天服务器?

ios - 如何从数组中的所有结构调用参数

ios - 第二次设置核心数据对象会导致 EXC_BAD_ACCESS

objective-c - AC3 音频 FramesPerPacket 大小

ios - UIWebView 获取请求URL路径(html字符串)

iphone - 有没有办法在sqlite表中顺序插入数据?