Где я могу узнать больше о WebCoreSharedBufferData?
У меня есть приложение, которое отлично работает на iOS 6, но на iOS 7, если есть очень специфическое действие, предпринятое пользователем (слишком сложное для входа, но оно использует UIWebView
и оно непротиворечиво), приложение вылетает с ошибкой:
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[WebCoreSharedBufferData getBytes:range:]: range {0, 8} exceeds data length 0'
Теперь я более чем счастлив сделать некоторые исследования и эксперименты сам, но я просто не могу найти WebCoreSharedBufferData
. Поисковые запросы Google показывают несколько человек (например здесь и здесь и здесь и здесь), которые сталкиваются с аналогичными проблемами, но на их вопросы либо не ответил, либо они 'используя свои приложения способами (например, масштабирование на карте или использование стороннего кода), которые я не делаю.
Документация Xcode никогда не слышала о WebCoreSharedBufferData
, и поиск моего проекта не показывает ссылок на него. Поиски Google также оставили меня непросвещенным, в основном, просто вопросы и проекты GitHub с сторонним кодом, который я не использую. Я предполагаю, что это что-то глубоко в функциональности Apple UIWebView
, но, не имея возможности узнать больше об этом, мне трудно работать.
Итак, мой вопрос: Кто-нибудь знает, где я могу найти информацию/учебники/описания и т.д. WebCoreSharedBufferData
? Я чувствую, что если бы я понял это немного лучше, я смог бы найти решение, его просто трудно отлаживать в темноте...
Или, наоборот, кто-нибудь просто понимает, что изменилось с помощью WebCoreSharedBufferData
в iOS 7, что может создать такую ошибку?
РЕДАКТИРОВАТЬ: Ключ, предоставленный kcbanner (который испытал подобную проблему) в комментариях ниже: обе наши проблемы связаны с страницами с холстами и onclick
событиями с этими холстами. Возможно, что-то изменилось с обработкой кликов в iOS 7?
Ответы
Ответ 1
Я тоже столкнулся с этой ошибкой. Моя настройка была phonegap 3.2 и createjs 0.7.0, и у меня никогда не было проблемы с ios6, но ios7 вызывал меня. Мое решение состояло в том, чтобы использовать один элемент холста. Я загружал два элемента canvas с помощью png spritesheet растровых данных и переключаясь назад и вперед, теперь я просто повторно использую один и тот же элемент canvas, очищая старые данные и добавляя новые данные. Кажется, решил проблему. все еще не понимаю, почему у меня не может быть двух элементов холста.
чуть больше... кажется, это произошло только тогда, когда я быстро перезагрузил два элемента холста с помощью png-данных. Я не думаю, что это проблема поврежденных png, потому что это произойдет на разных растровых изображениях каждый раз, и теперь, когда я использую один и тот же элемент canvas, все работает нормально.
Ответ 2
Если вы используете IOS, я бы не использовал onClick. IOS берет ваш клик и помещает некоторую задержку в 200 мс на onClicks, что приводит к поломке "webglue". JavaScript имеет полную сенсорную библиотеку, которую я бы использовал, а также что-то вроде Hammer.js разрешит вашу проблему. Кроме того, я бы использовал phonegap для компонента веб-просмотра вашего приложения (даже если это не полное приложение), потому что они фиксируют множество причуд/ошибок, которые IOS имеет с их собственным веб-просмотром (даже если это просто для просмотра веб-страниц).