2013-07-26 4 views
5

Im возникают проблемы, пытаясь понять эту проблему, потому что независимо от того, что я делаю, чтобы получить мою проблему работать я получаю крэшUIWebView аварий и я понятия не имею, почему

Heres след

$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 в качестве слайд-шоу. Иногда, когда страница поворачивается, мне нужно загрузить HTML-файл с веб-представлением, эти html-файлы содержат html-код, используемый для анимации объектов на странице html. Поэтому каждый раз, когда я создаю новый контроллер представления для отображения в pageViewController, мне нужно уничтожить веб-просмотр, потому что aniamtion не будет анимировать при переходе от одной анимации к другой. Иногда это срабатывает, но иногда это приводит к краху. Теперь я понятия не имею, как читать это, поскольку веб-просмотры не документируются настолько подробно, как это сообщение. Так кто-нибудь точно знает, что здесь происходит?

код выплюнуть, когда он ломает



    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*) 

+0

Вопрос содержит дизассемблированный код библиотеки, где произошел сбой. Вместо этого укажите трассировку стека, они намного полезнее при диагностике сбоев. – BergQuester

+0

Как мне это сделать? – Esko918

+0

Ну, я узнал, как [NSThread callStackSymbols] - это то, что сообщение мне сказал – Esko918

ответ

1

Не уверен, если это будет исправить вашу проблему, но попробуйте установить делегат WebView до нуля, когда вы уничтожите WebView. Если вы получите обратный вызов UIWebViewDelegate после того, как веб-просмотр будет отменен, ваше приложение выйдет из строя.

+0

Я обнаружил, что на другом сайте и попробовал это, увы, безрезультатно, это решило мою проблему. Спасибо всем, чувак. – Esko918

+2

Без символики кода и размещения трассировки с разделителями, я не думаю, что кто-то сможет вам помочь. Кроме того, вы можете разместить некоторые из своих кодов. – JonahGabriel

+0

Можете ли вы указать мне на сайт или яблочные документы, которые расскажут мне, как это сделать? – Esko918

3

Вы можете остановить Webview нагрузку на ваш метод viewWillDisappear

[webview stopLoading] 
webview.delegate = nil; 

или с дополнительным установить его на пустую страницу

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

удачи!

Смежные вопросы