当我运行IOS应用程序时(在IPad模拟器或真实设备上),我收到EXC_BAD_ACCESS错误。通常情况下我对此进行故障排除没有问题,但错误来自系统内部,并且在搜索之后我就陷入了如何继续进行故障排除的过程中。
有人能给我一些想法,或者如何解决这个问题吗?我正在处理一个庞大的项目,并且没有从错误消息中得到任何指示,我不知道从哪里开始。
谢谢!
#0 0x0230609b in objc_msgSend ()
#1 0x0206943d in CFRetain ()
#2 0x0214e9c0 in +[__NSArrayI __new::] ()
#3 0x020a200a in -[__NSPlaceholderArray initWithObjects:count:] ()
#4 0x009aa2dc in -[CALayerArray copyWithZone:] ()
#5 0x02164bd9 in -[NSObject copy] ()
#6 0x016bb0fa in -[UIView dealloc] ()
#7 0x02306e4d in _objc_rootRelease ()
#8 0x0206e435 in CFRelease ()
#9 0x0214fe94 in -[__NSArrayM dealloc] ()
#10 0x02306e4d in _objc_rootRelease ()
#11 0x02306e10 in objc_release ()
#12 0x02307c60 in (anonymous namespace)::AutoreleasePoolPage::pop(void*) ()
#13 0x02096ed8 in _CFAutoreleasePoolPop ()
#14 0x012619f9 in -[NSAutoreleasePool release] ()
#15 0x0168af78 in _UIApplicationHandleEvent ()
#16 0x035dffa9 in PurpleEventCallback ()
#17 0x021361c5 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
#18 0x0209b022 in __CFRunLoopDoSource1 ()
#19 0x0209990a in __CFRunLoopRun ()
#20 0x02098db4 in CFRunLoopRunSpecific ()
#21 0x02098ccb in CFRunLoopRunInMode ()
#22 0x016872a7 in -[UIApplication _run] ()
#23 0x01688a9b in UIApplicationMain ()
#24 0x0020f2a4 in main at /..../main.m:17
答案 0 :(得分:1)
从堆栈跟踪中,您可以解决以下问题:
1)这与自动释放池有关
2)正在发布阵列
3)我猜这个数组包含一些UIViews(可能)
4)作为UIView dealloc的一部分,出现了可怕的错误
那不是那么有用,抱歉:)
堆栈跟踪开始时的自动释放告诉您几乎可以肯定的是,您没有保留足够的内容:)
是否存在发生此错误的特定视图?
答案 1 :(得分:1)
我的第一个猜测是你发布了一个已经自动释放的视图。例如:
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[self.view addSubview:myButton]
[myButton release];
你也可以两次发布一个视图,或者发布一个超视图消失的视图。
如果可能,您可以考虑将项目移至ARC,因为它解决了大多数(但不是全部!)这些问题。否则,调试它的最佳选择可能是#ifdef你的部分代码,直到崩溃消失,然后重新放入代码,直到它再次崩溃。