线程1:EXC_BAD_ACCESS(代码= 1,地址= 0xf00000c)

use*_*706 14 iphone objective-c ios7 xcode5

我有线程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;
Run Code Online (Sandbox Code Playgroud)

重新运行应用程序后,我所有的更改都在核心数据中.更多这个问题仅适用于iOS 7. iOS 6.1还可以.

有人知道如何解决它吗?

Pet*_*ese 15

正如评论所说,这个错误很可能在你的代码中很深.如果罪魁祸首是一个僵尸,找到它的最简单方法是在探查器中运行它(最好是在最新的Xcode,当前Xcode 5,因为它已被改进)并选择"Zombies".当它失败时,您可以看到对象发生的所有事件的历史记录.

另外,设置一个异常断点.当错误发生而不是在main中,你可能会得到一个中断,异常被传递出去.


use*_*706 13

我用" Zombies " 解决了这个问题,问题在于 [UIScrollView(UIScrollViewInternal) _notifyDidScroll]

我补充道

- (void)dealloc {

  self.tableView.delegate = nil;

} 
Run Code Online (Sandbox Code Playgroud)

此问题仅在iOS 7中出现.

感谢帮助!


KTP*_*TEL 6

我只能通过调试源代码并重新分析我的逻辑来解决此问题。

以下是一些对我有帮助的参考。

EXC_BAD_ACCESS表示消息已发送到内存中没有类实例可以执行的点。因此是“不良访问”。

在3种情况下,您将获得EXC_BAD_ACCESS:

  • 对象未初始化
  • 对象已被释放
  • 不太可能发生的其他事情

那已经是一个很好的起点。开始使用调试器,如果您最近向正在处理的类中添加了一个新对象,请在第一次使用新添加的对象之前在该行上放置一个断点,然后检查调试器中的值。

不过,最发生的事情是您将向过释放的对象(即从调用堆栈中删除的对象)发送消息。在这种情况下,您将在控制台中获得的所有内容(乃至所有内容)都只是:EXC_BAD_ACCESS

这是因为对象已消失,没有信息说明它是什么类,什么源文件或其他任何信息。

请尝试避免为此使用僵尸。


小智 6

我只是遇到了完全相同的问题。

看这里并没有发现什么所以我开始回溯直到我想,也许我应该尝试 Clean Build Folder

我很高兴它像 CLEAN BUILD FOLDER 一样简单!!!

产品 - 清理构建文件夹(??K)