【问题标题】:EXC_BAD_ACCESS MysteryEXC_BAD_ACCESS 谜团
【发布时间】:2011-09-12 22:02:10
【问题描述】:

我可以在这方面提供一点帮助。通过注释掉 dealloc 中的 release 语句,我将崩溃源缩小到 NSMutableArray viewControllers。

代码:

NSMutableArray *controllers = [[NSMutableArray alloc] init];
for (NSInteger i = 0; i < self.numSlides; i++) {
    [controllers addObject:[NSNull null]];
}

self.viewControllers = controllers;
[controllers release];

// Later on in dealloc:
[viewControllers release], viewControllers = nil;

在 main.m 文件中 [ int retVal = UIApplicationMain(argc, argv, nil, nil); ] 我们得到: 程序接收信号:“EXC_BAD_ACCESS”

当我注释掉 viewControllers 的发布时 -> 没有崩溃但内存泄漏。

你在外面吗欧比旺 - 你是我们最后的希望。

提前感谢您的帮助。

【问题讨论】:

    标签: ios4 nsmutablearray


    【解决方案1】:

    您发布的代码看起来不错;没有看到它的其余部分,我猜你的viewControllers 属性被声明为assign 而不是retain。如果不是这样,请尝试运行静态分析器(产品 > 分析或 Cmd-Shift-B);它通常可以捕捉到这种问题。

    【讨论】:

    • 感谢诺亚 - 在发布之前尝试过,但无济于事。这是个好主意。 Analyzer 没有给出任何答案,但 Instruments 给了我一个 Zombie。
    • 现在如果我注释掉 [viewControllers release], viewControllers = nil; 我会在这一行的 Instruments 上遇到内存泄漏。在Dealloc。 NSMutableArray *controllers = [[NSMutableArray alloc] init];这很奇怪——我看过很多关于这个问题的帖子,但从来没有一个通过仪器泄漏测试的解决方案——静态分析器没有找到它。任何帮助将不胜感激。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 2013-01-07
    • 1970-01-01
    相关资源
    最近更新 更多