Если я правильно прочитал ваш код , вы пытаетесь выяснить, когда игрок закончил играть, а затем вы хотите отменить выбор текущей поездки и освободить игрока. Ваша проблема в том, что вы запускаете плеер, а затем сразу же проверяете, где он в данный момент играет. Если у вас нет файла длиной почти 0, то currentTime и length НИКОГДА не будут равны.
Если это то, что вы пытаетесь сделать, вы должны использовать протокол AVAudioPlayerDelegate и особенно:
– audioPlayerDidFinishPlaying:successfully:
метод, который вызывается, когда игрок заканчивается.
Таким образом, вам нужно изменить свой класс, который управляет плеером, отредактировав файл .h для использования протокола AVAudioPlayerDelegate. Очевидно, продолжайте расширять то, что вы были раньше.
@interface YourClass <AVAudioPlayerDelegate>
@end
В вашем файле .m:
Затем, когда вы создали и назначили свой экземпляр игрока:
[player setDelegate:self];
В файле .m также добавьте метод
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
// Your success code goes here
}