2013-10-22 18 views
16

Mam aplikację, która działa doskonale na iOS 6, ale na iOS 7, jeśli jest bardzo specyficzna akcja podjęta przez użytkownika (zbyt skomplikowane, aby dostać się do, ale używa ona UIWebView i jest spójna), aplikacja wywala się z błędem:Gdzie mogę dowiedzieć się więcej o WebCoreSharedBufferData?

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[WebCoreSharedBufferData getBytes:range:]: range {0, 8} exceeds data length 0' 

teraz jestem bardziej niż szczęśliwi, aby zrobić kilka badań i eksperymentów siebie, ale po prostu nie mogę znaleźć WebCoreSharedBufferData. Wyszukiwania Google ujawniają kilka osób (np. here i here i here i here), które mają podobne problemy, ale ich pytania albo nie zostały odebrane, albo używają ich aplikacji w sposób (np. Powiększanie mapy lub używanie kodu innej firmy), którego nie robię.

Dokumentacja Xcode nigdy nie słyszała o WebCoreSharedBufferData, a po przeszukaniu mojego projektu nie ma żadnych odniesień do niego. Wyszukiwarki Google pozostawiły też nieoświetlone, głównie pytania i projekty GitHub z użyciem kodu innej firmy, którego nie używam. Zakładam, że jest to coś głęboko w funkcjonalności Apple UIWebView, ale bez możliwości dowiedzenia się o niej, mam ciężki czas.

Moje pytanie brzmi: czy ktoś wie, gdzie mogę znaleźć informacje/samouczki/opisy itp. Z WebCoreSharedBufferData? Mam wrażenie, że gdybym to zrozumiał trochę lepiej, byłbym w stanie znaleźć rozwiązanie, po prostu trudno jest debugować w ciemności ...

Lub alternatywnie, czy ktoś po prostu wie, co zmieniło się z WebCoreSharedBufferData w iOS 7, który może powodować taki błąd?

EDIT: Wskazówką dostarczone przez kcbanner (który doświadczył podobnego problemu) w komentarzach poniżej: oba nasze problemy wiążą stron z płócien i onclick wydarzenia z tych płócien. Być może coś się zmieniło w przypadku obsługi kliknięć w systemie iOS 7?

+0

Jaką akcję wykonał użytkownik? Mam również tę kwestię i nie udało mi się wyśledzić zdarzenia wyzwalającego. – kcbanner

+0

To było dość skomplikowane i specyficzne dla aplikacji, gdzie trzeba było odwiedzić określoną stronę w 'UIWebView' i wywołać pewną funkcję JavaScript na tej stronie (związane z tworzeniem i umieszczaniem warstw Canvas ze zdarzenia' onclick'), a następnie ponownie załaduj stronę i spróbuj ponownie wywołać tę samą funkcję 'onclick'.Nie jestem facetem JS i to jest naprawdę dziwaczny wzór, więc nie mogłem go wyśledzić, ale awaria następuje w 100% przypadków, gdy wykonasz te kroki. Jak o tobie? – Nerrolken

+1

Podobna sytuacja, wykorzystujemy płótna i klikamy wydarzenia na tych płótnach. Być może jest to błąd z obsługą klocków. – kcbanner

Odpowiedz

0

jeśli korzystasz z IOS i nie użyłbym opcji onClick. IOS przyjmuje kliknięcia i dodaje funky 200 ms opóźnienia onClicks, co powoduje czasami przerwanie "webglue". JavaScript ma pełną bibliotekę dotykową, której użyłbym, a także coś w rodzaju Hammer.js rozwiąże Twój problem. również użyłbym phonegap dla składnika webview twojej aplikacji (nawet jeśli nie jest to pełna aplikacja), ponieważ naprawia wiele dziwactw/błędów IOS z ich natywną webview (nawet jeśli jest to tylko przeglądanie strony).

1

Po prostu napotkałem ten błąd również. Moja konfiguracja była phonegap 3.2 i createjs 0.7.0 i nigdy nie miałem problemu z ios6, ale ios7 powodował mi pasowania. Moim rozwiązaniem było użycie jednego elementu canvas. Ładowałem dwa elementy canvas z danymi png spritesheet i przełączałem się w tę iz powrotem, teraz używam ponownie tego samego elementu canvas, usuwając stare dane i dodając nowe dane. Wydaje się, że rozwiązałeś problem. wciąż nie rozumiem, dlaczego nie mogę mieć dwóch elementów canvas.

tylko trochę więcej ... wydaje się, że to miało miejsce tylko wtedy, gdy szybko wczytałem dwa elementy canvas z danymi png. Nie sądzę, że jest to problem uszkodzonych pngs, ponieważ zdarzyłoby się to za każdym razem przy różnych mapach bitowych i teraz, gdy ponownie użyję tego samego elementu canvas, wszystko działa dobrze.

Powiązane problemy