线程1:EXC_BAD_ACCESS(代码= 1,地址= 0xf00000c)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程1:EXC_BAD_ACCESS(代码= 1,地址= 0xf00000c)相关的知识,希望对你有一定的参考价值。
我有线程1的问题:EXC_BAD_ACCESS(代码= 1,地址= 0xf00000c),我不知道如何解决它。当我在核心日期更改某个对象并保存它并且我尝试将此控制器弹出到父级时出现。使用retVal在main()中出现此错误。这是一些代码
int retVal;
@try {
retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
*/ error is here**
}
@catch (NSException *exception) {
NSLog(@"%@", [exception callStackSymbols]);
@throw exception;
}
return retVal;
重新运行应用程序后,我所有的更改都在核心数据中。更多这个问题仅适用于ios 7. iOS 6.1还可以。
有人知道如何解决它吗?
正如评论所说,这个错误很可能在你的代码中很深。如果罪魁祸首是僵尸,找到它的最简单方法是在探查器中运行它(最好是在最新的Xcode,当前Xcode 5,因为它已被改进)并选择“Zombies”。当它失败时,您可以看到对象发生的所有事件的历史记录。
另外,设置一个异常断点。当错误发生而不是在main中,你可能会得到一个中断,异常被传递出去。
我用“Zombies”解决了这个问题,问题出在[UIScrollView(UIScrollViewInternal) _notifyDidScroll]
上
我补充道
- (void)dealloc {
self.tableView.delegate = nil;
}
此问题仅在iOS 7中出现。
感谢帮助!
我只通过调试源代码并重新分析我的逻辑来解决这个问题。
以下是一些帮助我很多的参考。
EXC_BAD_ACCESS意味着消息被发送到内存中没有类的实例来执行它的点。因此“糟糕的访问”。
您将在3种情况下获得EXC_BAD_ACCESS:
- 对象未初始化
- 对象已经发布
- 其他不太可能发生的事情
这已经是一个很好的起点。开始使用调试器,如果您最近向正在处理的类添加了一个新对象,请在第一次使用新添加的对象之前在该行添加断点并检查调试器中的值。
最发生的事情是你将向一个过度发布的对象发送一条消息 - 即从调用堆栈中消失的对象。在这种情况下,您将在控制台中获得的所有内容(实际上所有内容)都只是:EXC_BAD_ACCESS
这是因为对象消失了,没有信息是什么类,或者是什么源文件或其他任何东西。
更多信息可以在here找到
请尽量避免使用僵尸。
EXC_BAD_ACCESS表示没有类的实例来执行它。
有两种或更多种可能性:
- 对象未初始化
- 对象已经发布
请仔细调试应用程序并仔细分析每个对象。这可能会解决您的问题。
就我而言,我使用的是第三方库,我忘了在Storyboard Identity Inspector中设置自定义类名
我通过发现我的一个NSString变量的名称与框架的类变量之一具有相同的名称来解决同样的问题。花了几秒钟改变了名字,问题消失了。
在框架中有如此庞大的类变量,很可能偶尔,每个程序员只是通过巧合来命名他的类中的某个变量与在框架类中某处使用的变量完全相同。所以在大多数情况下它不一定是Xcode错误。
我今天可能遇到另一个问题:我有一个带有非对象条目的可变字典尝试。有一个代码片段,用于向字典添加BOOL值。所以难怪我得到这个错误=)。
以上是关于线程1:EXC_BAD_ACCESS(代码= 1,地址= 0xf00000c)的主要内容,如果未能解决你的问题,请参考以下文章
线程1:EXC_BAD_ACCESS(代码=1,地址=0x48)avaudiofoundation
线程 1:EXC_BAD_ACCESS(代码=1,地址=0x200)
线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x30000008)