2013-10-02 4 views
5

В настоящее время я создаю приложение, в котором используется средство просмотра krpano, которое представляет собой средство просмотра панорамы, построенное с использованием JavaScript. Я загружаю этот просмотрщик Panorama в UIWebView с локальными изображениями, которые сохраняются на iPad.iOS 7: UIWebView падает из-за исключения диапазона

Но после того, как с помощью средства просмотра панорамы на некоторое время, я получаю эту ошибку и приложение аварии:

Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[WebCoreSharedBufferData getBytes:range:]: range {0, 4000} exceeds data length 0' 
*** First throw call stack: 
(0x2e213f53 0x38a226af 0x2e213e95 0x2eb4dc31 0x2e16ca65 0x2ef4ce47 0x2ef4cd21 0x2ef68f03 0x2ef682db 0x2ef68029 0x2ef67e61 0x2ef67dcf 0x2ef6bd39 0x2ef6b813 0x2ef5471f 0x2e29b2ed 0x30635c6d 0x30635117 0x30621069 0x30620bad 0x3061d949 0x3061c051 0x38f0c297 0x38f0c09b 0x38f0cd15 0x38f0cf8d 0x39047dbf 0x39047c84) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

Кто-нибудь есть идея, почему это происходит? Когда я загружаю онлайн-страницу в UIWebView, проблем нет.

Благодарим за помощь!

+1

Забавно, что это происходит только на устройстве, а не на симуляторе. То же самое с этой ошибкой: : ImageIO: JPEG Не файл JPEG: начинается с 0x00 0x00 – chritaso

+0

Вы столкнулись с этой проблемой @chritaso? – hoya21

+0

@ hoya21 Пожалуйста, посмотрите мой комментарий к ответу Ортвина Гентца. – chritaso

ответ

1

Это, вероятно, проблема, связанная с памятью. Когда веб-приложение выделяет слишком много памяти с помощью Javascript, происходят странные вещи.

Ваш лучший выбор - следить за предупреждениями о предупреждении памяти и пытаться влиять на веб-приложение извне. Конечно, это зависит от особенностей веб-приложения, но вы можете попытаться отключить userInteractionEnabled на некоторое время, чтобы позволить веб-просмотру догнать заданные пользователем действия ввода или, если предупреждение о сохранении сохраняется, попробуйте перезагрузить веб-представление.

К сожалению, здесь нет простых решений.

+1

Привет, Ортвин, я думаю, ты прав. Я пробовал много вещей, чтобы предотвратить появление Webview, а также приложение от сбоев, но единственное, что помогло, - использовать изображения с более низким разрешением в веб-просмотре. Это не настоящее решение, так как результат будет выглядеть не так хорошо, как без этого решения. Но похоже, что, как вы сказали, у вас нет большого контроля над этим поведением. – chritaso

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