AVAudioPlayer isPlaying всегда возвращает ноль - PullRequest
0 голосов
/ 25 июня 2010

У меня странная проблема с классом AVAudioPlayer.Каждый раз, когда я пытаюсь получить доступ к одному из его свойств, они имеют значение null.

// Get the file path to the song to play.
 NSString *filePath = [[[NSBundle mainBundle] pathForResource:pSound.fileName 
               ofType:pSound.fileType] retain];

 // Convert the file path to a URL.
 NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:filePath];

 NSError* err;
 //Initialize the AVAudioPlayer
 self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&err];

    if( err ){
  NSLog(@"Initializing failed with reason: %@", [err localizedDescription]);
 }
 else{
  [self.audioPlayer setDelegate:self];
  [self.audioPlayer prepareToPlay];
  self.playCount = self.playCount + 1;
        NSLog(@"%@", [self.audioPlayer isPlaying]); //this displays null; also if I call it at a later time
 };

 [filePath release];
 [fileURL release];

Любые идеи?

РЕДАКТИРОВАТЬ: как ни странно, когда я сохраняю isPlaying в bool и печатать bool, я получаю значение...

Ответы [ 2 ]

2 голосов
/ 25 июня 2010
NSLog(@"%@", [self.audioPlayer isPlaying]); 

% @ - означает, что вы хотите напечатать результат [yourObject toString], поэтому, если вы хотите проверить значение bool, возвращаемое [self.audioPlayer isPlaying] - вы должны использовать% d.

ps не забывайте звонить [audioPlayer play];;)

0 голосов
/ 07 ноября 2014

Вы можете использовать (audioPlay.playing) вместо [audioPlayer isPlaying]

if (audioPlayer.playing) {
        [audioPlayer stop];
} else {
        [audioPlayer play];
}
...