2012-01-31 5 views
3

Чтобы избежать вентиляционных процессов, мне может показаться, что мне интересно узнать, что люди здесь использовали (фрагмент кода мудрый), чтобы воспроизводить короткие и маленькие звуковые эффекты в своих приложениях? Теперь, когда я работаю над проектом iOS 5 ARC, мой предыдущий метод запрещен и выдает ошибки.Воспроизвести короткий звуковой эффект

Итак, как же просто играть небольшой 1-секундный аудиофайл в своем приложении с iOS 5 и Objective-C?

Спасибо всем, кто позитивно вносит свой вклад!

EDIT: Ниже приведен код, который посылает ошибки с ARC и IOS 5

NSString *soundPath=[[NSBundle mainBundle] pathForResource:@"swoosh" ofType:@"caf"]; 
    SystemSoundID sound; 
    AudioServicesCreateSystemSoundID((__bridge_retained CFURLRef)[NSURL fileURLWithPath:soundPath],&sound); 
    AudioServicesPlaySystemSound(sound); 
+0

Код для вашего предыдущего метода, пожалуйста! – ZhangChn

+0

NSString * soundPath = [[NSBundle mainBundle] pathForResource: @ "swoosh" ofType: @ "caf"]; Звук SystemSoundID; AudioServicesCreateSystemSoundID ((__ bridge_retained CFURLRef) [NSURL fileURLWithPath: soundPath] и звук); AudioServicesPlaySystemSound (звук); – Brayden

ответ

2

Попробуйте изменить __bridge_retained только __bridge и сообщение ARC должен уйти.

Я считаю, что AVAudioPlayer является более высоким уровнем и имеет больший объем памяти, поэтому для воспроизведения коротких звуков он может быть медленным и использовать больше памяти, чем необходимо. См. Multimedia Programming Guide: using Audio

1

Это фрагмент кода я использую:

//alarm sound 
self.alarmSoundPlayer = [[AVAudioPlayer alloc] 
    initWithContentsOfURL:[[NSBundle mainBundle] 
           URLForResource:@"alarm" 
           withExtension:@"caf"] 
        error:0]; 

... 

[alarmSoundPlayer play]; 
Смежные вопросы