У меня есть аудиофайл, который должен исчезнуть, пока пользователь прокручивает 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];
}
}
Достигается так же далеко, как PerforSelector, но не дальше, потому что я предполагаю, что он пытается выполнить в потоке, у которого нет доступак.Я даже не могу изменить его на performSelector:onThread:withObject:waitUntilDone:
, потому что нет опции задержки.
Есть идеи?Почему им так трудно просто затухать? Стон
Спасибо!