У меня есть аудиофайл, который должен исчезнуть, пока пользователь прокручивает UIScrollView. Однако любой метод performSelector: withObject: afterDelay:
блокируется до тех пор, пока пользователь не прекратит прокрутку. Итак, я попытался создать некоторый код для выполнения затухания в другом потоке:
- (void)fadeOut
{
[NSThread detachNewThreadSelector:@selector(fadeOutInBackground:) toTarget:self withObject:self.audioPlayer];
}
- (void)fadeOutInBackground:(AVAudioPlayer *)aPlayer
{
NSAutoreleasePool *myPool = [[NSAutoreleasePool alloc] init];
[self performSelector:@selector(fadeVolumeDown:) withObject:aPlayer afterDelay:0.1];
[myPool release];
}
- (void)fadeVolumeDown:(AVAudioPlayer *)aPlayer
{
aPlayer.volume = aPlayer.volume - 0.1;
if (aPlayer.volume < 0.1) {
[aPlayer stop];
} else {
[self performSelector:@selector(fadeVolumeDown:) withObject:aPlayer afterDelay:0.1];
}
}
Он доходит до performSelector, но не дальше, потому что я думаю, что это ' s пытается выполнить поток, к которому у него нет доступа. Я даже не могу изменить его для performSelector: onThread: withObject: waitUntilDone:
, потому что нет опции задержки.
Есть идеи? Почему они так усложнили, чтобы просто заглушить звук? стон
Спасибо!