在应用程序中只有一个地方使用网页视图,用于显示来自各种来源的新闻文章网页。我有一个视图控制器,它有一个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 – 不可复制的网路崩溃所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)