EXC_BAD_ACCESS程序崩溃的目标C代码= 1个

问题描述:

在达到这个代码的应用程序崩溃EXC_BAD_ACCESS程序崩溃的目标C代码= 1个

- (void)setUniformsForProgramAtIndex:(NSUInteger)programIndex { 
    [uniformStateRestorationBlocks enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){ 
     dispatch_block_t currentBlock = obj; 
     // error here is Thread:20 EXC_BAD_ACCESS (code =1, address= 0x579fcea0) 
     currentBlock(); 
    }]; 
} 

尝试了很多事情,但还是无法弄清楚什么错误请帮我解决这个问题...

+0

'obj' - 你确定你得到一个块吗? – Igor

+0

显示,你如何声明'uniformStateRestorationBlocks' – Igor

+0

currentBlock = obj; @Igor –

检查字典的内容。 看起来像obj被释放,它应该发生,因为它保留时,你添加它。放置一个断点并检查你在obj中获得的值。

您需要确定,uniformStateRestora‌​‌​tionBlocks中的值确实是一个块。

也许uniformStateRestorationBlocks的值不是有效的dispatch_block_t对象或对象已在其他位置释放?

通常,EXC_BAD_ACCESS崩溃是通过访问已释放或无效的指针发生的。