2013-10-02 68 views
5

我目前正在構建一個使用krpano查看器的應用程序,該查看器是使用JavaScript構建的Panorama Viewer。我使用保存在iPad上的本地圖像在UIWebView中加載了此Panorama Viewer。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請看看我對Ortwin Gentz的回答的評論。 – chritaso

回答

1

這可能是一個內存相關的問題。當一個Web應用程序使用Javascript分配太多內存時,會發生奇怪的事情。

最好的辦法是觀察內存警告通知,並嘗試從外部影響Web應用程序。當然,這取決於Web應用程序的具體情況,但您可能需要嘗試禁用userInteractionEnabled一段時間,以使Web視圖趕上排隊的用戶輸入操作,或者如果內存警告仍然存在,請嘗試重新加載Web視圖。

不幸的是,這裏沒有簡單的解決方案。

+1

嗨Ortwin,我認爲你是對的。我嘗試了很多東西來防止Webview以及應用崩潰,但唯一幫助的是在webview中使用分辨率較低的圖像。這不是真正的解決方案,因爲結果看起來不像沒有這種解決方法那麼好。但似乎就像你說的那樣,你對這種行爲沒有太多的控制。 – chritaso

相關問題