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

时间:2013-10-04 14:17:40

标签: 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;

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

有人知道如何解决它吗?

9 个答案:

答案 0 :(得分:14)

我用“ Zombies ”解决了这个问题,问题出在了      [UIScrollView(UIScrollViewInternal) _notifyDidScroll]

我添加了

- (void)dealloc {

  self.tableView.delegate = nil;

} 

此问题仅出现在iOS 7中。

感谢您的帮助!

答案 1 :(得分:12)

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

另外,设置一个异常断点。发生错误时可能会中断,而不是在main中传递异常。

答案 2 :(得分:6)

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

以下是一些帮助我很多的参考资料。

EXC_BAD_ACCESS表示消息被发送到内存中没有类的实例来执行它的点。因此“糟糕的访问”。

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

  • 未初始化对象
  • 对象已经发布
  • 其他不太可能发生的事情

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

发生的最多的事情是你将向一个过度发布的对象发送消息 - 即从调用堆栈中消失的对象。在这种情况下,您将在控制台中获得的所有内容(实际上是所有内容)将只是:EXC_BAD_ACCESS

这是因为对象消失了,没有信息是什么类,或者是什么源文件或其他什么。

可在here

找到更多信息

请尽量避免使用僵尸。

答案 3 :(得分:3)

EXC_BAD_ACCESS表示没有类的实例可以执行它。

有两种或更多种可能性:

  1. 未初始化对象
  2. 对象已经发布
  3. 请仔细调试应用程序并仔细分析每个对象。这可能会解决您的问题。

答案 4 :(得分:1)

就我而言,我使用的是第三方库,却忘记了在Storyboard Identity Inspector中设置自定义类名称

答案 5 :(得分:0)

我通过发现我的一个NSString变量的名称与其中一个框架名称相同来解决了同样的问题。类变量。花了几秒钟改变了名字,问题就消失了。

在框架中有如此庞大的类变量,很可能偶尔,每个程序员只是通过巧合来命名他的类中的某个变量与在框架类中某处使用的变量完全相同。 因此,在大多数情况下,它不一定是Xcode错误。

答案 6 :(得分:0)

今天我可能还有另一个问题: 我有一个带有非对象条目尝试的可变字典。有一个代码片段,用于向字典添加BOOL值。所以难怪我得到了这个错误=)。

答案 7 :(得分:0)

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

在这里没有发现任何内容,所以我开始回溯,直到我认为,也许我应该尝试清理构建文件夹?

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

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

?

答案 8 :(得分:0)

就我而言,它试图在打印语句中使用 Int32 记录 %s