2016-01-02 1 views
1

Не могу понять, что здесь не так, или что мне не хватает, чтобы услышать звук. Он отлично работает без ошибок.Не слышен звук от AVAudioPlayer?

Из того, что я читаю, это как-то связано с ARC ....? Но когда я смотрю под "Build Settings: Apple LLVM 7.0: ARC" ARC значится как "НЕТ"


.h

@property (nonatomic, strong) AVAudioPlayer *player; 

.m

@synthesize player; 

... 

NSURL *soundFileURL = [[NSBundle mainBundle] URLForResource:@"abc" withExtension:@"m4a"]; 

player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil]; 
player.numberOfLoops = -1; //Infinite 

[player play]; 

Эта работа:

AudioServicesPlaySystemSound(1005); 

Попытка это: (ARC __bridge modifiers demystified)

SystemSoundID soundID; 
NSString *soundFile = [[NSBundle mainBundle] pathForResource:@"abc" ofType:@"m4a"]; 
NSLog(@"Filename: %@", soundFile); 
AudioServicesCreateSystemSoundID((__bridge CFURLRef) [NSURL fileURLWithPath:soundFile], & soundID); 
AudioServicesPlaySystemSound(soundID); 

Это вылетает с: * Нагрузочный приложение из-за неперехваченного исключением 'NSInvalidArgumentException', причина: «* - [NSURL initFileURLWithPath:] : nil string parameter '
... так что я не вижу имени файла ... Имя файла: (null)

+1

Попробуйте этот путь, чтобы получить путь URL звукового эффекта: NSString * soundFilePath = [[NSBundle mainBundle] pathForResource: @ "ABC" OfType: @ "m4a"]; NSURL * звукFileURL = [NSURL файлURLWithPath: звукFilePath]; – azimov

+1

@azimov Почему? Код OP для получения URL-адреса в порядке. – rmaddy

+0

как и где объявлен игрок. вы должны сохранить игрока во время его использования. например через сильное свойство –

ответ

0

Had to goto:

Project: 
Targets: 
Build Phases: 
Copy Bundle Resources: and add the abc.m4a file to it. 

Остальные файлы, в которых я нуждался, были там, кроме этого.

Подробнее: NSBundle pathForResource is NULL

+0

Простая отладка показала бы вам, что 'soundFileURL' был' nil' в вашем исходном коде. Это также означает, что «игрок» был, вероятно, «ноль». Использование параметра 'error' также помогло бы. – rmaddy