Во-первых, измените свой ViewController.h на
#import <UIKit/UIKit.h>
@class AVAudioPlayer;
@interface ViewController : UIViewController
-(IBAction)PlayRandomSound;
@property (nonatomic, retain) AVAudioPlayer *soundPlayer;
@end
и первые строки ViewController.m к
#import "ViewController.h"
#import <AVFoundation/AVAudioPlayer.h>
@implementation ViewController
@synthesize soundPlayer = _soundPlayer;
-(IBAction)PlayRandomSound{
int randomNumber = arc4random() % 8 + 1;
NSURL *soundURL = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:[NSString stringWithFormat:@"Sound%02d", randomNumber] ofType:@"mp3"]];
_soundPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:nil];
[_soundPlayer prepareToPlay];
[_soundPlayer play];
NSLog(@"randomNumber is %d", randomNumber);
NSLog(@"tmpFilename is %@", soundURL);
}
Edit: я только потом заметил, что вы не используете ARC так что этот код имеет небольшую утечку. Но это будет сделано для начала. Возможно, вы должны установить _soundPlayer в nil при создании ViewController, а затем проверить: если это не nil: отпустите его и создайте новый, иначе просто создайте новый. Или вы можете рассмотреть возможность перехода на ARC, если это новый проект.
Вы пробовали протоколировать пути/имена файлов, являются ли они правильными и т. Д., И какое исключение выбрасывается и тем что. –
попробуйте изменить% d на% i – Shubhank
% d должно быть в порядке - они эквивалентны (% d не является «двойным», если вам интересно). –