2013-07-26 11 views
5

Im kłopoty próbując zrozumieć ten problem, bo nie wiem co mam zrobić, żeby mój problem do pracy ciśgle tej awariiawaria UIWebView i nie mam pojęcia dlaczego

Herezje ślad

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

Co robię używa UIPageViewController jako pokazu slajdów. Czasami, gdy strona się kręci, muszę załadować plik HTML z widokiem web, te pliki html zawierają kod html służący do animowania obiektów na stronie html. Tak więc za każdym razem, gdy kreślę nowy kontroler widoku do wyświetlania na stronieViewController, muszę zniszczyć widok internetowy, ponieważ animacja nie będzie animowana podczas przechodzenia od jednej animacji do drugiej. Czasami działa, ale czasami powoduje awarię. Teraz nie mam pojęcia, jak to przeczytać, ponieważ wyświetlenia stron internetowych nie są tak szczegółowe, jak ta wiadomość. Czy ktoś wie dokładnie, co się tutaj dzieje?

Kod wypluć gdy pęknie



    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

Pytanie zawiera zdemontowany kod biblioteki, w której nastąpiła awaria. Zamiast tego podaj ślad stosu, są one znacznie bardziej przydatne w diagnozowaniu awarii. – BergQuester

+0

Jak to zrobić? – Esko918

+0

Cóż, dowiedziałem się, jak [NSThread callStackSymbols] jest tym, co post kazał mi zrobić – Esko918

Odpowiedz

1

Nie wiem, czy to rozwiąże problem, ale spróbuj ustawić delegata WebView do zera, gdy zniszczy webview. Jeśli otrzymasz wywołanie zwrotne UIWebViewDelegate po zwolnieniu widoku internetowego, twoja aplikacja ulegnie awarii.

+0

Znalazłem to na innej stronie i wypróbowałem to, niestety bez skutku, to rozwiązało mój problem. Dzięki i tak koleś. – Esko918

+2

Bez symbolizowania kodu i umieszczania niepoinformowanych śladów stosu, nie sądzę, by ktokolwiek był w stanie Ci w tym pomóc. Pomocne byłoby również umieszczenie kodu. – JonahGabriel

+0

Czy możesz wskazać mi stronę internetową lub dokumenty Apple, które mówią mi, jak to zrobić? – Esko918

3

Możesz przestać Webview załadunek od metody viewWillDisappear

[webview stopLoading] 
webview.delegate = nil; 

lub z dodatkowym ustawić go na pustej stronie

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

powodzenia!

Powiązane problemy