Jay*_*man 7 iphone debugging exc-bad-access
帮助,我已经在这几周乱砍了!我有这个应用程序我在模拟器中开发,我已经做了很多UI的东西,它只是与数据有趣的部分.它在启动时立即启动,大约90%的时间我运行它,它会引发EXC_BAD_ACCESS异常.
我已经注释掉了我的所有发布消息,甚至还添加了一些保留消息,以确保它不会过度发布.奇怪的是,有时我在代码中做的事情会使它工作,然后它会工作,直到我再次进行代码更改.然后我注释掉我添加的新代码,它仍然崩溃.
我已经在网上阅读了十几篇关于此的文章,尝试了他们建议的内容.我设置了断点,仍然无法弄清楚它在哪里.当我在调试器中单击调用堆栈时,显示源代码的唯一位置是主要的底层.
调试器有这个堆栈,但每次崩溃时都会有一点波动.不一致的性质告诉我有一些记忆它是自动释放的,但我不知道如何找出什么.
0 objc_msgSend
1 ??
2 _CFAutoReleasePoolPop
3 -[NSAutoReleasePool release]
4 _UIApplicationHandleEvent
5 PurpleEventCallback
6 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__
7 __CFRunLoopDoSource1
8 __CFRunLoopRun
9 CFRunLoopRunSpecific
10 CFRunLoopRunInMode
11 -[UIApplication _run]
12 UIApplicationMain
13 main
Run Code Online (Sandbox Code Playgroud)
还有一些事实:
The*_*der 11
您将需要在代码中启用僵尸对象,并且检查自动释放的对象,以及启用调试可能会有所帮助.
我添加了三个环境变量.
所有这些都设置为YES
这是我走的路径的链接.
http://www.codza.com/how-to-debug-exc_bad_access-on-iphone
如果您使用的是XCode 4,那么您将在Edit Schemes弹出窗口的Arguments部分中添加这些内容.
另外需要注意的是,您应该只释放或自动释放您保留的对象.您保留以下对象的保留.
如果您向其他任何对象发送自动释放,您可以随机结束此错误和其他错误.
通常我释放对象,然后将它们设置为零,这样如果我稍后释放它,我不会有任何问题,因为如果你autorelease nil,你会得到零.
NSObject *myObject = [incomingObject retain];
// Do something with the object.
[myObject autorelease];
[myObject autorelease]; // This line will end in an error down the line when the object is released past 0, or when the release pool is drained.
myObject = nil;
[myObject release]; // This line will do nothing. no error, no effect.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8394 次 |
最近记录: |