Я нашел проблему. Моя ошибка, конечно.
Во многих моих файлах классов я добавлял:
-(BOOL) respondsToSelector:(SEL) aSelector
{
NSLog(@"Class: %@ subclass of %@, Selector: %@", [self class], [super class], NSStringFromSelector(aSelector));
return [super respondsToSelector:aSelector];
}
В основном из любопытства.
Что ж, когда я добавил делегата к своему звуку, этот метод вызывается перед делегатом, и он вызывается из любого цикла выполнения, в котором находился AVAudioPlayer, и, вероятно, из цикла выполнения без пула авто-выпуска.