QuartzCore - iOS8中的崩溃

时间:2014-12-22 06:38:28

标签: objective-c iphone crash ios8

在发布我的iOS应用程序的新版本后,我经常遇到以下崩溃。

崩溃:WebThread EXC_BAD_ACCESS KERN_INVALID_ADDRESS位于0x80000012

这是令人恼火的崩溃之一,其中堆栈跟踪没有提供任何与其崩溃或导致崩溃的原因相关的线索。一个主要的问题是这次崩溃只发生在iOS8中。请在下面找到堆栈跟踪:

0 libobjc.A.dylib        objc_msgSend + 5 release
1 CoreFoundation         CFRelease + 600
2 QuartzCore             CA::release_objects(X::List<void const*>*) + 16
3 QuartzCore             -[CAAnimation dealloc] + 54
4 libobjc.A.dylib        objc_object::sidetable_release(bool) + 166
5 libobjc.A.dylib        (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 404
6 CoreFoundation         _CFAutoreleasePoolPop + 16
7 Foundation             -[NSAutoreleasePool drain] + 122
8 CFNetwork              AutoAutoreleasePool::~AutoAutoreleasePool() + 24
9 CFNetwork              ___ZN27URLConnectionClient_Classic18_withDelegateAsyncEPKcU13block_pointerFvP16_CFURLConnectionPK33CFURLConnectionClientCurrent_VMaxE_block_invoke_2 + 166
10 CFNetwork             RunloopBlockContext::_invoke_block(void const*, void*) + 60
11 CoreFoundation        CFArrayApplyFunction + 36
12 CFNetwork             RunloopBlockContext::perform() + 182
13 CFNetwork             MultiplexerSource::perform() + 216
14 CFNetwork             MultiplexerSource::_perform(void*) + 48

任何提示都将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:0)

大多数情况下,EXC_BAD_ACCESS来自向已发布的对象发送消息。虽然这在ARC下比以前更难,但仍有可能。

KERN_INVALID_ADDRESS部分只是告诉您,您尝试访问的内存不是应用程序内存空间的一部分,这为已发布的对象句柄假设提供了信任。

要调试以前发布的对象(称为“Zombie”对象),请在调试器中启用NSZombies。在XCode 7中......

  • CMD-SHIFT-提出管理方案。
  • 选择您的计划
  • 选择Diagnostics
  • 检查Enable Zombie Objects

注意:您只想在调试版本中执行此操作,因为僵尸对象会占用大量内存并损害整体性能。不过,它仍然是一款出色的调试工具。