UIWebView崩溃,我不明白为什么

时间:2013-07-26 19:10:22

标签: ios uiwebview

我无法解决这个问题,因为无论我做什么让我的问题得以解决,我都会遇到这个问题

继续跟踪

 $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代码。因此,每当我创建一个新的视图控制器以显示在pageViewController中时,我需要销毁webview,因为当从一个动画转到另一个动画时,aniamtion不会动画。有时它会起作用,但有时它会引起这种崩溃。现在我不知道如何阅读这个,因为webview没有记录如此详细的消息。那么有谁知道这里到底发生了什么?

代码在中断时吐出



    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:  b.w    0x399edc30                ; WebCore::PageCache::markPagesForFullStyleRecalc(WebCore::Page*)

2 个答案:

答案 0 :(得分:3)

您可以在viewWillDisappear方法

上停止加载webview
[webview stopLoading]
webview.delegate = nil;

或另外设置为空白页

[webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
祝你好运!

答案 1 :(得分:1)

不确定这是否会解决您的问题,但在销毁webview时尝试将webview的委托设置为nil。如果在取消分配webview后获得UIWebViewDelegate回调,则应用程序将崩溃。