2016-08-16 52 views
0

在達到這個代碼的應用程序崩潰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 –

回答

1

檢查字典的內容。 看起來像obj被釋放,它應該發生,因爲它保留時,你添加它。放置一個斷點並檢查你在obj中獲得的值。

0

您需要確定,uniformStateRestora‌​‌​tionBlocks中的值確實是一個塊。

1

也許uniformStateRestorationBlocks的值不是有效的dispatch_block_t對象或對象已在其他位置釋放?

通常,EXC_BAD_ACCESS崩潰是通過訪問已釋放或無效的指針發生的。