1

无法确定此错误发生了什么。

我正在分多个段上传文件。

我已将我的 api 调用线程化为 7 个并发线程。

这是它停止的汇编代码。

汇编代码

这是我打印的堆栈跟踪

打印的堆栈跟踪

最后是堆栈窗口

堆栈窗口

除了 dispatch_get_low() 的 #define 之外,我没有任何 DISPATCH_QUEUE_PRIORITY_LOW 并且我没有对 dispatch_get_low() 的任何调用

作为一点背景知识,我正在从 xcode 4.4 开发我的应用程序,最近安装了 GM Seed 4.5 以在 ios 6 上进行测试。我所有的代码仍然是 ios5,这个错误在 xcode 更新前后困扰着我。

更新

将 NSZombieEnabled YES 添加回我的环境变量后

NSZombieEnabled 环境变量

我以几乎相同的方式出现了一个不同的错误,但是这个错误被称为转发

装配断点

断点组装

堆栈跟踪打印输出

堆栈跟踪打印输出

调用堆栈窗口

调用堆栈窗口

我仍然不知道实际发生了什么。

我还在调查。任何进一步的帮助将不胜感激。

==== 新发展 ====

显然,在尝试获取 malloc 调用的一些输出时。我完全缓解了这个错误。

这令人沮丧,因为我认为我不能在启用此标志的情况下编译发布。

在此处输入图像描述

EXC_BAD_ACCESS 不再出现,因此日志将无用。这个错误是我遇到过的最奇怪的问题,而且我遇到了很多奇怪的 iOS 错误。

再次更新

我一直在跟踪这个错误。原来有问题的对象是一个-[CFNumber release]调用该数字是在一个块中创建的,然后被传递给委托人。

它也可以与核心数据对象保存然后消失。

我添加了一个方法 HSLogBrute(@"") 记录行号和文件名。

我已将其追踪到以下代码。

    if (progressMatch > progressPercent){
        HSLogBrute(@"");
        TransferStatus *transferStatus = [TransferStatus objectByID:task.transferStatusID];
        HSLogBrute(@"");
        transferStatus.segmentsTransferred = [NSNumber numberWithInt:segmentsTransferred.intValue];
        HSLogBrute(@"");
        transferStatus.segmentsTotal = [NSNumber numberWithInt:segmentsTotal.intValue];
        HSLogBrute(@""); // This is the last log I am getting.
        [transferStatus save];
        HSLogBrute(@"");
    }
    HSLogBrute(@"");// Before putting in the [NSNumber numberWithInt:] calls this was the last line.
4

1 回答 1

0

原来我们正在创建一个 NSMutableDictionary 并在其中使用数字。像我们一样快地创建和销毁 NSNumbers 似乎在某些时候混淆了弧线。并且对象被无序地保留和释放。

我的解决方案是创建一个自定义对象,其中包含我需要的数字。并增加和减少这些原始数字类型,而不是创建和销毁这么多 NSNumber 值。

于 2012-09-26T23:11:06.883 回答