Xcode stops on prepareToPlay

avaudioplayer, objective-c, xcode

Solution

The problem was I normally develop with a breakpoint set to "All Exceptions", and the actual exception thrown was __cxa_throw. Which apparently turns out to be in C++ libraries that are used to implement AVAudioPlayer. By changing the breakpoint to "All Objective-C Exceptions" the program ran fine. (This can be done by editing the breakpoint and changing the Exception field to Objective-C.

Problem

Using AVAudioPlayer to add sound to a working application, it stops / hangs on prepareToPlay. Note it also stops / hangs on play. Hitting "Continue program execution" several times makes the application resume. This problem only occurs when running the program in the simulator. Using Xcode 4.6 Code Snippets: ViewController.h ``` #import <UIKit/UIKit.h> #import <AVFoundation/AVFoundation.h> @interface ViewController : UIViewController <AVAudioPlayerDelegate> @end ``` ViewController.m ``` #import "ViewController.h" @interface ViewController () { } @property (nonatomic, strong) AVAudioPlayer *audioPlayer; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [self initilizeAudio]; } - (void)initilizeAudio { NSError *error = nil; NSURL *audioURL = [[NSBundle mainBundle] URLForResource:@"Background" withExtension:@"mp3"]; self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioURL error:&error]; if (error) { NSLog(@"Error in audioPlayer: %@", [error localizedDescription]); } else { [self.audioPlayer setDelegate:self]; [self.audioPlayer prepareToPlay]; } } @end ``` Stack trace ``` 0 __cxa_throw 21 -[AVAudioPlayer prepareToPlay] 22 -[ViewController viewDidLoad] . . . ```

Original source