UIWebView崩溃,我不知道为什么

我遇到麻烦,试图找出这个问题,因为无论我做什么,让我的问题工作,我不断得到这个崩溃

inheritance人的痕迹

$0 = 0x1f8f9a10 ( 0 ??? 0x02b04144 0x0 + 45105476, 1 TheAppName 0x001016e0 start + 0, 2 Foundation 0x34334599 + 72, 3 WebCore 0x399e7bfb + 82, 4 UIKit 0x3595b493 + 182, 5 UIKit 0x358d7d1f + 382, 6 UIKit 0x358d7d33 + 402, 7 UIKit 0x358d7d33 + 402, 8 UIKit 0x358d7431 + 360, 9 UIKit 0x358d72c3 + 30, 10 UIKit 0x35ce2fef + 386, 11 UIKit 0x35ce3879 + 464, 12 UIKit 0x35ce63d3 + 698, 13 UIKit 0x35ce5e49 + 552, 14 UIKit 0x35ce28dd + 172, 15 UIKit 0x358d8803 + 258, 16 QuartzCore 0x35682d8b + 214, 17 QuartzCore 0x35682929 + 460, 18 QuartzCore 0x3568385d + 16, 19 QuartzCore 0x35683243 + 238, 20 QuartzCore 0x35683051 + 316, 21 QuartzCore 0x356ba0f7 + 254, 22 QuartzCore 0x356b9ff1 + 64, 23 IOMobileFramebuffer 0x37915fd7 + 154, 24 IOKit 0x346b4449 IODispatchCalloutFromCFMessage + 192, 25 CoreFoundation 0x33a975db + 118, 26 CoreFoundation 0x33aa2173 + 34, 27 CoreFoundation 0x33aa2117 + 138, 28 CoreFoundation 0x33aa0f99 + 1384, 29 CoreFoundation 0x33a13ebd CFRunLoopRunSpecific + 356, 30 CoreFoundation 0x33a13d49 CFRunLoopRunInMode + 104, 31 GraphicsServices 0x375ca2eb GSEventRunModal + 74, 32 UIKit 0x35929301 UIApplicationMain + 1120, 33 TheAppName 0x001332d9 main + 116, 34 TheAppName 0x00101708 start + 40 ) 

我正在做的是使用UIPageViewController作为幻灯片。 有时当页面转动时,我需要加载一个带有web视图的HTML文件,这些html文件包含html代码,用于在HTML页面中为对象设置animation效果。 所以每次我克里特一个新的视图控制器显示在pageViewController我需要摧毁的Web视图,因为animation不会animation时,从一个animation到另一个。 有时它有效,但有时它会导致这个崩溃。 现在我不知道如何阅读这个,因为webviews没有logging如此详细的信息。 那么有没有人知道到底是怎么回事?

代码在中断时吐出

 WebCore`WebCore::Page::setDeviceScaleFactor(float): 0x399edbc0: push {r4, r5, r7, lr} 0x399edbc2: mov r4, r0 0x399edbc4: vmov d0, r1, r1 0x399edbc8: vldr s2, [r4, #100] 0x399edbcc: add r7, sp, #8 0x399edbce: vcmpe.f32s2, s0 0x399edbd2: vmrs APSR_nzcv, fpscr 0x399edbd6: it eq 0x399edbd8: popeq {r4, r5, r7, pc} 0x399edbda: vstr s0, [r4, #100] 0x399edbde: ldr r5, [r4, #56] 0x399edbe0: cbz r5, 0x399edc22 ; WebCore::Page::setDeviceScaleFactor(float) + 98 0x399edbe2: ldr.w r0, [r5, #804] 0x399edbe6: movs r1, #1 0x399edbe8: bl 0x39a3c3c0 ; WebCore::Document::styleResolverChanged(WebCore::StyleResolverUpdateFlag) 0x399edbec: add.w r0, r5, #28 0x399edbf0: movs r1, #0 0x399edbf2: bl 0x399f9ed0 ; WebCore::FrameTree::traverseNext(WebCore::Frame const*) const 0x399edbf6: mov r5, r0 0x399edbf8: cmp r5, #0 0x399edbfa: bne 0x399edbe2 ; WebCore::Page::setDeviceScaleFactor(float) + 34 0x399edbfc: ldr r0, [r4, #56] 0x399edbfe: cmp r0, #0 0x399edc00: beq 0x399edc22 ; WebCore::Page::setDeviceScaleFactor(float) + 98 0x399edc02: bl 0x39dee4f4 ; WebCore::Frame::deviceOrPageScaleFactorChanged() 0x399edc06: ldr r5, [r4, #56] 0x399edc08: b 0x399edc1e ; WebCore::Page::setDeviceScaleFactor(float) + 94 0x399edc0a: add.w r0, r5, #872 0x399edc0e: bl 0x39dc7fa0 ; WebCore::Editor::deviceScaleFactorChanged() 0x399edc12: add.w r0, r5, #28 0x399edc16: movs r1, #0 0x399edc18: bl 0x399f9ed0 ; WebCore::FrameTree::traverseNext(WebCore::Frame const*) const 0x399edc1c: mov r5, r0 0x399edc1e: cmp r5, #0 0x399edc20: bne 0x399edc0a ; WebCore::Page::setDeviceScaleFactor(float) + 74 0x399edc22: bl 0x399e6ed8 ; WebCore::pageCache() 0x399edc26: mov r1, r4 0x399edc28: pop.w {r4, r5, r7, lr} 0x399edc2c: bw 0x399edc30 ; WebCore::PageCache::markPagesForFullStyleRecalc(WebCore::Page*) 

你可以停止你的viewWillDisappear方法的webview加载

 [webview stopLoading] webview.delegate = nil; 

或者附加设置为空白页面

 [webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]]; 

祝你好运!

不知道这是否会解决您的问题,但尝试设置的webview的委托为零当你摧毁的web视图。 如果在webview被处理后得到一个UIWebViewDelegatecallback,你的应用程序将会崩溃。