【问题标题】:iOS 7: UIWebView crashes because of range exceptioniOS 7:UIWebView 因范围异常而崩溃
【发布时间】:2013-10-08 14:46:56
【问题描述】:

我目前正在构建一个使用 krpano 查看器的应用程序,这是一个使用 JavaScript 构建的全景查看器。我正在将这个全景查看器加载到 UIWebView 中,其中包含保存在 iPad 上的本地图像。

但在使用全景查看器一段时间后,我收到此错误并且应用程序崩溃:

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 中加载在线页面时没有问题。

感谢您的帮助!

【问题讨论】:

  • 有趣的是,这只发生在设备上,而不是模拟器上。与此错误相同:: ImageIO: JPEG Not a JPEG file: started with 0x00 0x00
  • @chritaso 是您提出这个问题的吗?
  • @hoya21 请看我对 Ortwin Gentz 回答的评论。

标签: ios iphone cocoa-touch uiwebview uikit


【解决方案1】:

这可能是与内存相关的问题。当 Web 应用程序使用 Javascript 分配过多内存时,就会发生奇怪的事情。

最好的办法是观察内存警告通知并尝试从外部影响网络应用程序。当然,这取决于 Web 应用程序的具体情况,但您可能想尝试禁用 userInteractionEnabled 一段时间以让 Web 视图赶上排队的用户输入操作,或者,如果内存警告仍然存在,请尝试重新加载 Web 视图.

很遗憾,这里没有简单的解决方案。

【讨论】:

  • 嗨 Ortwin,我认为你是对的。我尝试了很多方法来防止 Webview 和应用程序崩溃,但唯一有帮助的是在 webview 中使用分辨率较低的图像。这不是真正的解决方案,因为如果没有这种解决方法,结果看起来不会那么好。但似乎就像你说的那样,你对这种行为没有太多的控制权。
猜你喜欢
  • 1970-01-01
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 2012-10-25
  • 1970-01-01
  • 2017-07-15
相关资源
最近更新 更多