AVAudioPlayer に問題があります。サウンドが再生される前に UICollectionView のセルに色を付けたいのですが、このコードではこの操作を行うことができません。
背景を変更する操作は、音を鳴らす命令よりも遅いと思います。このため、セルは背景色を変更しません。
int randomNumber = (arc4random() % [soundArray count]);
self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[soundArray objectAtIndex:randomNumber] error:&error];
self.audioPlayer.delegate = self;
if(!self.audioPlayer){
NSLog(@"Error creating player: %@", error);
}
else{
CGColorRef colorRef = [[cellArray objectAtIndex:randomNumber] backgroundColor];
[[cellArray objectAtIndex:randomNumber] setBackgroundColor:(__bridge CGColorRef)([UIColor blackColor])];
[self.audioPlayer play];
sleep([self.audioPlayer duration]);
[[cellArray objectAtIndex:randomNumber] setBackgroundColor:colorRef];
}