ios – 不可复制的网路崩溃

ios – 不可复制的网路崩溃,第1张

概述我有一个iPad应用程序在App Store大约三个月了,我已经收到一些奇怪的崩溃报告,我无法弄清楚。这些并不那么频繁,自发布以来已经有大约15-20个实例,但是仍然很频繁,实际上会让我失望。崩溃略有不同(请参阅下面的堆栈跟踪),但由于它们与WebCore有关,我猜测它们与应用程序中的UIWebView的使用有关,可能有一个常见的原因,尽管我不是100%正面。该应用的部署目标是iOS 6.0,但崩 我有一个iPad应用程序在App Store大约三个月了,我已经收到一些奇怪的崩溃报告,我无法弄清楚。这些并不那么频繁,自发布以来已经有大约15-20个实例,但是仍然很频繁,实际上会让我失望。崩溃略有不同(请参阅下面的堆栈跟踪),但由于它们与WebCore有关,我猜测它们与应用程序中的UIWebVIEw的使用有关,可能有一个常见的原因,尽管我不是100%正面。该应用的部署目标是iOS 6.0,但崩溃出现在iPad 2,iPad 3和iPad Mini上,专门用于iOS 7。

在应用程序中只有一个地方使用网页视图,用于显示来自各种来源的新闻文章网页。我有一个视图控制器,它有一个UIWebVIEw作为它的视图。这个视图控制器有一个实例遍及整个应用程序,每次选择新文章时,现有的webvIEw重新加载新选择的文章的URL。

基于围绕WebCore问题的讨论提出的解决方案之一,建议在控制器的dealloc方法中将webvIEws委托属性设置为nil。不幸的是,我认为这不适用于我的情况,因为视图控制器在应用程序的生命周期内没有被释放。
另一个问题可能是不正确的网页,在CSS(loadPendingImages崩溃)中有不良的图像引用。我找不到这样的页面。
此外,我仔细检查并确保在主线程上进行与webvIEw相关的 *** 作。

崩溃是

Exception Type: EXC_BAD_ACCESS Code: KERN_INVALID_ADDRESS

具有以下堆栈跟踪(全部here)

0 WebCore WebCore::StyleResolver::applyMatchedPropertIEs(WebCore::StyleResolver::MatchResult const&,WebCore::Element const*) + 8151 WebCore WebCore::StyleResolver::applyMatchedPropertIEs(WebCore::StyleResolver::MatchResult const&,WebCore::Element const*) + 7882 WebCore WebCore::StyleResolver::styleForElement(WebCore::Element*,WebCore::RenderStyle*,WebCore::StyleSharingBehavior,WebCore::RuleMatchingBehavior,WebCore::RenderRegion*) + 9483 WebCore WebCore::document::styleForElementIgnoringPendingStylesheets(WebCore::Element*) + 964 WebCore WebCore::Element::computedStyle(WebCore::PseudoID) + 1425 WebCore WebCore::ComputedStyleExtractor::propertyValue(WebCore::CsspropertyID,WebCore::EUpdateLayout) const + 458

0 WebCore WebCore::StyleResolver::loadPendingImages() + 11531 WebCore WebCore::ResourceRequestBase::~ResourceRequestBase() + 1042 WebCore WebCore::StyleResolver::applyMatchedPropertIEs(WebCore::StyleResolver::MatchResult const&,WebCore::Element const*) + 7823 WebCore WebCore::StyleResolver::styleForElement(WebCore::Element*,WebCore::RenderRegion*) + 9484 WebCore WebCore::document::styleForElementIgnoringPendingStylesheets(WebCore::Element*) + 965 WebCore WebCore::Element::computedStyle(WebCore::PseudoID) + 142

0 WebCore WebCore::StyleResolver::adjustRenderStyle(WebCore::RenderStyle*,WebCore::Element*) + 191 WebCore WebCore::StyleResolver::styleForElement(WebCore::Element*,WebCore::RenderRegion*) + 9642 WebCore WebCore::document::styleForElementIgnoringPendingStylesheets(WebCore::Element*) + 963 WebCore WebCore::Element::computedStyle(WebCore::PseudoID) + 1424 WebCore WebCore::ComputedStyleExtractor::propertyValue(WebCore::CsspropertyID,WebCore::EUpdateLayout) const + 4585 WebCore WebCore::CSSComputedStyleDeclaration::getPropertyValue(WebCore::CsspropertyID) const + 42

0 WebCore WebCore::TimerBase::heapDeleteMin() + 371 WebCore WebCore::ThreadTimers::sharedTimerFiredInternal() + 942 WebCore WebCore::ThreadTimers::sharedTimerFiredInternal() + 943 WebCore WebCore::timerFired(__CFRunLoopTimer*,voID*) + 244 CoreFoundation __CFRUNLOOP_IS_CALliNG_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 145 CoreFoundation __CFRunLoopDoTimer + 782

有没有人经历过类似的事故?如果是这样:
有没有办法复制它们?
2.如何在不复制它们的情况下进行调试?
什么修复解决了问题?

谢谢!

解决方法 我在一个应用程序中遇到了完全相同的问题,它奇怪的只发生在运行iOS 7的旧设备上。我怀疑这与他们无法跟上。

我有一个UItableVIEw,其中一行将打开一个UIVIEwController,其上有一个UIWebVIEw,用于自定义广告。我发现在旧设备上的对象和内存,比其他平台看到的更有规律。我可以通过进出屏幕2或3次,轻松地在iPhone 4上模仿崩溃。在哪里作为iPhone 5,我花了15分钟做同样的事情,不能错过。

我知道你可能会觉得你的控制器没有被处理,但是真的听起来好像有些引用被删除,我也看到我的代理引用在这个应用程序中消失了几次。

我的建议和对我有用的是停止执行webvIEw,并将所有内容设置为零,当你可以。

在我的应用程序的一个实例中,我选择在vIEwWilldisappear回调中执行此 *** 作,因为在我的情况下,它已经从用户中删除,并在以后重新创建,所以我将所有内容都删除:

[webVIEw stopLoading];self.webVIEw.delegate = nil;self.webVIEw = nil;
总结

以上是内存溢出为你收集整理的ios – 不可复制的网路崩溃全部内容,希望文章能够帮你解决ios – 不可复制的网路崩溃所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1086671.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存