Damit es für mich möglichst einfach wird, Sounds wiederzugeben, habe ich eine eigene Klasse erstellt, welche mit dem AVAudioPlayer arbeitet. Diese Klasse funktioniert auch ziemlich gut, nur dass sie einen Absturtz verursacht, sobald sie released wird.
Kann mir jemand sagen, was ich falsch mache?
JWSound.h
Alles anzeigen
JWSound.m
Alles anzeigen
Kann mir jemand sagen, was ich falsch mache?
JWSound.h
Quellcode
JWSound.m
Quellcode
- #import "JWSound.h"
- #import <AVFoundation/AVFoundation.h>
- @implementation JWSound
- - (id)initJWSoundWithFile:(NSString*)file withLoop:(BOOL)loop {
- [super init];
- NSString *filePath = [[NSBundle mainBundle] pathForResource:file ofType:@"mp3"];
- NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:filePath];
- audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
- [audioPlayer prepareToPlay];
- [filePath release];
- [fileURL release];
- if (loop == YES) {
- audioPlayer.numberOfLoops = -1;
- }
- return self;
- }
- - (void) play {
- NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
- if ([settings boolForKey:@"sound_setting"] == 1) {
- [audioPlayer stop];
- audioPlayer.currentTime = 0;
- [audioPlayer play];
- }
- }
- - (void) stop {
- NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
- if ([settings boolForKey:@"sound_setting"] == 1) {
- [audioPlayer stop];
- }
- }
- - (void) changePosition:(int)pos {
- NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
- if ([settings boolForKey:@"sound_setting"] == 1) {
- audioPlayer.currentTime = pos;
- }
- }
- - (void)dealloc {
- [audioPlayer release];
- [super dealloc];
- }
- @end