MPMediaItem ne joue pas dans AVAudioPlayer en utilisant MPMediaItemPropertyAssetURL

J'ai ce code, pour find et lire un MPMediaItem:

MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:self.persistentIDOfSongToPlay forProperty:MPMediaItemPropertyPersistentID comparisonType:MPMediaPredicateComparisonContains]; NSSet *predicateSet = [NSSet setWithObject:predicate]; MPMediaQuery *searchQuery = [[MPMediaQuery alloc] initWithFilterPredicates:predicateSet]; NSArray *queryResults = [searchQuery items]; NSLog(@"count: %i", queryResults.count); MPMediaItem *item = [queryResults objectAtIndex:0]; NSLog(@"item: %@", item); NSURL *itemURL = [item valueForProperty:MPMediaItemPropertyAssetURL]; NSLog(@"url: %@", itemURL); NSError *error; AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:itemURL error:&error]; [audioPlayer prepareToPlay]; [audioPlayer play]; NSLog(@"error: %@", error); 

Mon journal:

 count: 1 item: <MPConcreteMediaItem: 0x200b0870> 12385304089059716916 url: ipod-library://item/item.m4a?id=-6061439984649834700 error: (null) 

Mais l'audio ne joue pas. J'ai le volume sur, et un autre AVAudioPlayer, effectuant une fonction différente, joue son audio bien plus tard.

AVAudioPlayer doit être déclaré en tant que propriété ou ivar afin qu'il survive après la finalisation de la méthode.