2011-09-12 52 views
0

我可以在这个上使用一点帮助。我通过在dealloc中注释release语句来将崩溃源缩小到NSMutableArray viewControllers。EXC_BAD_ACCESS Mystery

代码:

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的,零,无); ]我们得到: 编程接收到的信号:“EXC_BAD_ACCESS”

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

你在那里欧比旺 - 你是我们最后的希望。

在此先感谢您的帮助。

回答

0

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

+0

感谢诺亚 - 在发布之前尝试过无效。这是个好主意。分析仪没有给出任何答案,但仪器给了我一个僵尸。 – robMontesinos

+0

现在我在这个线上的仪器上发生内存泄漏,如果我注释掉[viewControllers release],viewControllers = nil;在Dealloc。 NSMutableArray * controllers = [[NSMutableArray alloc] init];这非常奇怪 - 我已经看到许多关于这个问题的文章,但是从来没有一个解决方案能够通过仪器上的泄漏测试 - 静态分析器没有提到它。任何帮助,将不胜感激。 – robMontesinos