我该在哪里学习有关WebCoreSharedBufferData的更多信息?

15

我有一个应用,在iOS 6上运行得非常完美,但是在iOS 7上,如果用户执行了一个非常特定的操作(太复杂了,不便赘述,但涉及到UIWebView且一致),应用程序会崩溃并显示以下错误:

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

我很乐意进行一些研究和实验,但我找不到WebCoreSharedBufferData。通过谷歌搜索发现一些人(例如这里这里这里这里)遇到了类似的问题,但他们的问题要么没有被回答,要么他们使用的应用程序方式(如缩放地图或使用第三方代码)与我的方式不同。

Xcode文档从未听说过WebCoreSharedBufferData,而我的项目搜索也没有引用它的内容。谷歌搜索也没有帮助我,大多数只是问题和使用我不需要的第三方代码的GitHub项目。我认为它是深藏在苹果的UIWebView功能中的某个东西,但由于无法了解更多信息,我很难继续。

所以我的问题是:有人知道在哪里可以找到关于WebCoreSharedBufferData的信息/教程/描述等吗?我觉得如果我能更好地理解它,我就能找到解决方案,只是在黑暗中调试很困难...

或者,有人可以直接告诉我在iOS 7中WebCoreSharedBufferData发生了什么变化,可能会导致这样的错误吗?

编辑:以下评论提供了一个线索,由经历过类似问题的kcbanner提供:我们两个人的问题都涉及到带有画布和onclick事件的页面。也许在iOS 7中关于画布的点击处理发生了一些变化?


用户采取了什么行动?我也遇到了这个问题,但是一直没有成功地追踪到触发事件。 - kcbanner
1
类似的情况,我们利用画布和画布上的点击事件。也许这是画布点击处理程序的一个错误。 - kcbanner
好的,我将编辑原帖以添加那个提示。 - Nerrolken
1
你可以在WebKit开源项目中找到它。例如,Safari 6.x https://trac.webkit.org/browser/releases/Apple/Safari%206.0.2/WebCore/platform/mac/SharedBufferMac.mm vs https://trac.webkit.org/browser/trunk/Source/WebCore/platform/mac/SharedBufferMac.mm - russbishop
1
我在devforums.apple.com上查找了一下,似乎当流向设备的数据被中断时,人们最常遇到这些问题。此外,如果您获得了一个符号化的堆栈跟踪并浏览了WebKit源代码(正如@xenadu所提到的),您肯定会学到一些东西。您还可以通过WebKit错误报告者来查看是否有类似的问题或报告您自己的问题。 - paulrehkugler
显示剩余4条评论
2个回答

1
我也遇到了这个错误。我的设置是phonegap 3.2和createjs 0.7.0,我从未在ios6上遇到过问题,但在ios7上却让我头疼不已。我的解决方法是使用一个画布元素。我之前一直在加载两个带有png精灵表位图数据的画布元素,并来回切换它们,现在我只需清除旧数据并添加新数据来重复使用同一个画布元素。似乎已经解决了这个问题。我仍然不明白为什么我不能有两个画布元素。
稍微再说一点...似乎只有当我快速重新加载两个带有png数据的画布元素时才会出现这个问题。我认为这不是损坏的png文件的问题,因为每次都会发生在不同的位图上,现在我重复使用同一个画布元素,一切正常。

0

如果你正在使用IOS,我不会使用onClick。IOS会在onClick上放置一些奇怪的200毫秒延迟,这有时会破坏“webglue”。JavaScript有一个完整的触摸库,我会使用它,还有像Hammer.js这样的东西可以解决你的问题。此外,我会为应用程序的Webview组件使用phonegap(即使它不是完整的应用程序),因为他们修复了IOS与其本地Webview存在的许多怪癖/错误(即使只是用于浏览网站)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接