Xcode 使用web view的iOS应用程序随机崩溃,没有良好的错误消息
我正在开发一个iPad应用程序,主要是一个网络视图。它是一个使用jQuery mobile、iScroll和一些小插件的web应用程序。在应用程序中唯一一致的两个插件是jquerymobile和iScroll,因此我不会列出所有的小插件,因为在各种不同的情况下,应用程序都可能触发相同的崩溃 我遇到的真正问题是xCode给我的唯一消息是WebCore在崩溃前到底在做什么。我不知道这是怎么回事。我一整天都在四处寻找解决问题的办法,但什么也没找到 输出如下所示:Xcode 使用web view的iOS应用程序随机崩溃,没有良好的错误消息,xcode,xcode4,jquery-mobile,webkit,Xcode,Xcode4,Jquery Mobile,Webkit,我正在开发一个iPad应用程序,主要是一个网络视图。它是一个使用jQuery mobile、iScroll和一些小插件的web应用程序。在应用程序中唯一一致的两个插件是jquerymobile和iScroll,因此我不会列出所有的小插件,因为在各种不同的情况下,应用程序都可能触发相同的崩溃 我遇到的真正问题是xCode给我的唯一消息是WebCore在崩溃前到底在做什么。我不知道这是怎么回事。我一整天都在四处寻找解决问题的办法,但什么也没找到 输出如下所示: 1 WebCore::Script
1 WebCore::ScriptExecutionContext::destroyedActiveDOMObject(WebCore::ActiveDOMObject*)
2 WebCore::ActiveDOMObject::~ActiveDOMObject()
3 WebCore::SuspendableTimer::~SuspendableTimer()
4 WebCore::DOMTimer::~DOMTimer()
5 WebCore::DOMTimer::removeById(WebCore::ScriptExecutionContext*, int)
6 WebCore::DOMWindow::clearTimeout(int)
7 WebCore::jsDOMWindowPrototypeFunctionClearTimeout(JSC::ExecState*)
8 JSC::Interpreter::privateExecute(JSC::Interpreter::ExecutionFlag, JSC::RegisterFile*, JSC::ExecState*)
9 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
10 JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
11 WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*)
12 WebCore::EventTarget::fireEventListeners(WebCore::Event*, WebCore::EventTargetData*, WTF::Vector<WebCore::RegisteredEventListener, 1ul>&)
13 WebCore::EventTarget::fireEventListeners(WebCore::Event*)
14 WebCore::Node::handleLocalEvents(WebCore::Event*)
15 WebCore::EventContext::handleLocalEvents(WebCore::Event*) const
16 WebCore::EventDispatcher::dispatchEvent(WTF::PassRefPtr<WebCore::Event>)
17 WebCore::EventDispatchMediator::dispatchEvent(WebCore::EventDispatcher*) const
18 WebCore::EventDispatcher::dispatchEvent(WebCore::Node*, WebCore::EventDispatchMediator const&)
19 WebCore::Node::dispatchEvent(WTF::PassRefPtr<WebCore::Event>)
20 WebCore::EventTarget::dispatchEvent(WTF::PassRefPtr<WebCore::Event>, int&)
21 WebCore::EventHandler::dispatchTouchEvent(WebCore::PlatformTouchEvent const&, WTF::AtomicString const&, WTF::HashMap<WebCore::EventTarget*, WTF::Vector<WTF::RefPtr<WebCore::Touch>, 0ul>*, WTF::PtrHash<WebCore::EventTarget*>, WTF::HashTraits<WebCore::EventTarget*>, WTF::HashTraits<WTF::Vector<WTF::RefPtr<WebCore::Touch>, 0ul>*> > const&, float, float)
22 WebCore::EventHandler::handleTouchEvent(WebCore::PlatformTouchEvent const&)
23 WebCore::EventHandler::touchEvent(WebEvent*)
24 -[WebHTMLView touch:]
25 -[WAKView _handleEvent:]
26 _ZL13eventCallbackP6WKViewP8WebEventPv
27 _WKViewHandleEvent
28 WKWindowSendEvent
29 -[UIWebBrowserView _dispatchWebEvent:]
30 -[UIWebBrowserView _webTouchEventsRecognized:]
31 -[NSObject performSelector:withObject:]
1 WebCore::ScriptExecutionContext::DestroyedActivedMobject(WebCore::ActiveDomainObject*)
2 WebCore::ActiveDOMObject::~ActiveDOMObject()
3 WebCore::SuspendableTimer::~SuspendableTimer()
4 WebCore::DOMTimer::~DOMTimer()
5 WebCore::DOMTimer::removeById(WebCore::ScriptExecutionContext*,int)
6 WebCore::DOMWindow::clearTimeout(int)
7 WebCore::jsDOMWindowPrototypeFunctionClearTimeout(JSC::ExecState*)
8 JSC::解释器::私有执行(JSC::解释器::ExecutionFlag,JSC::RegisterFile*,JSC::ExecutState*)
9 JSC::解释器::executeCall(JSC::ExecState*,JSC::JSObject*,JSC::CallType,JSC::CallData常量&,JSC::JSValue,JSC::ArgList常量&)
10 JSC::call(JSC::ExecState*,JSC::JSValue,JSC::CallType,JSC::CallData const&,JSC::JSValue,JSC::ArgList const&)
11 WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext*,WebCore::Event*)
12 WebCore::EventTarget::fireEventListeners(WebCore::Event*,WebCore::EventTargetData*,WTF::Vector&)
13 WebCore::EventTarget::fireEventListeners(WebCore::Event*)
14 WebCore::Node::HandleLocaleEvents(WebCore::Event*)
15 WebCore::EventContext::HandleLocaleEvents(WebCore::Event*)常量
16 WebCore::EventDispatcher::dispatchEvent(WTF::PassRefPtr)
17 WebCore::EventDispatchMediator::dispatchEvent(WebCore::EventDispatcher*)常量
18 WebCore::EventDispatcher::dispatchEvent(WebCore::Node*,WebCore::EventDispatchMediator常量&)
19 WebCore::Node::dispatchEvent(WTF::PassRefPtr)
20 WebCore::EventTarget::dispatchEvent(WTF::PassRefPtr,int&)
21 WebCore::EventHandler::dispatchTouchEvent(WebCore::PlatformTouchEvent常量&,WTF::AtomicString常量&,WTF::HashMap常量&,float,float)
22 WebCore::EventHandler::handleTouchEvent(WebCore::PlatformTouchEvent常量&)
23 WebCore::EventHandler::touchEvent(WebEvent*)
24-[WebHTMLView触控:]
25-[WAKView\u handleEvent:]
26_ZL13eventCallbackP6WKViewP8WebEventPv
27 _WKViewHandleEvent
28 WkWindowEndEvent
29-[UIWebBrowserView\u dispatchWebEvent:]
30-[UIWebBrowserView_WebTouchEvents已确认:]
31-[NSObject性能选择器:withObject:]
我得到的唯一真正的错误是线程1:程序收到信号:“EXC\u BAD\u ACCESS”
提前谢谢,我很高兴能得到任何帮助。给我指出正确的方向。好的,看来我终于解决了这个问题。我想我会在这里分享 我仍然不知道到底是什么导致了应用程序崩溃,但我找到的修复方案似乎已经解决了这个问题 因此,由于我在xcode中得到的所有输出都来自webkits core(至少在我有限的知识范围内,我得出了相同的结论),这让我开始查看提供webview的网站 我已经读了很多关于移动设备中html5视频的问题,所以我开始关注这些问题。我关掉了所有的JavaScript,给网站提供了一个HTML5视频元素。一切都进行得很顺利,不过在添加回jQuery mobile时,当我尝试在播放视频的同时滚动时,崩溃再次出现 我以前就知道在iOS设备上使用海报图像存在一些问题。所以我去掉了这个,这就成功了 综上所述: 这就是我所拥有的:
<video class="videoSignPlayer" poster="poster.jpg" width="768" height="512" style="display:none;">
<source src="movie.mp4" width="768" type='video/mp4;
codecs="avc1.4D401E, mp4a.40.2"' />
</video>
这是工作标记:
<video class="videoSignPlayer" width="768" height="512" style="display:none;">
<source src="movie.mp4" width="768" type='video/mp4;
codecs="avc1.4D401E, mp4a.40.2"' />
</video>
简单的修复
使用jQuery mobile时,视频元素上的海报属性似乎有问题。
(是的,我还尝试在
标签中预加载海报图像。崩溃的唯一解决方案是完全删除
标签上的海报属性。)好的,看来我终于解决了问题。我想我会在这里分享
我仍然不知道到底是什么导致了应用程序崩溃,但我找到的修复方案似乎已经解决了这个问题
因此,由于我在xcode中得到的所有输出都来自webkits core(至少在我有限的知识范围内,我得出了相同的结论),这让我开始查看提供webview的网站
我已经读了很多关于移动设备中html5视频的问题,所以我开始关注这些问题。我关掉了所有的JavaScript,给网站提供了一个HTML5视频元素。一切都进行得很顺利,不过在添加回jQuery mobile时,当我尝试在播放视频的同时滚动时,崩溃再次出现
我以前就知道在iOS设备上使用海报图像存在一些问题。所以我去掉了这个,这就成功了
综上所述:
这就是我所拥有的:
<video class="videoSignPlayer" poster="poster.jpg" width="768" height="512" style="display:none;">
<source src="movie.mp4" width="768" type='video/mp4;
codecs="avc1.4D401E, mp4a.40.2"' />
</video>
这是工作标记:
<video class="videoSignPlayer" width="768" height="512" style="display:none;">
<source src="movie.mp4" width="768" type='video/mp4;
codecs="avc1.4D401E, mp4a.40.2"' />
</video>
简单的修复
使用jQuery mobile时,视频元素上的海报属性似乎有问题。
(是的,我还尝试在
标签中预加载海报图像。崩溃的唯一解决方案是完全删除
标签上的海报属性。)