2012-11-27 64 views
0

對於播放快速聲音,我比較喜歡使用SystemSound over AudioPlayer,因爲加載時間更快。但現在我已升級到Xcode 4.5.2,並且使用ARC我的代碼播放音頻片段不再有效。請參閱以下完整代碼。我得到的錯誤來自以下行:AudioServicesCreateSystemSoundID((CFURLRef)filePath,& soundID);我得到紅色的錯誤,出現以下錯誤消息:將目標類型NSURL轉換爲C指針類型CFURL(又名const dtruct)。任何想法如何取代這條線?`systemSound不再使用升級的Xcode 4.5.2使用ARC

NSString *path = [NSString stringWithFormat:@"%@%@", [[NSBundle mainBundle] resourcePath], @"/click.mp3"]; 

SystemSoundID soundID; 

NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO]; 

// here is the problem line 
    AudioServicesCreateSystemSoundID((CFURLRef)filePath, &soundID); 

AudioServicesPlaySystemSound(soundID); 
+0

嘗試'AudioServicesCreateSystemSoundID((__橋CFURLRef)文件路徑,和soundID);' –

+0

@RoboticCat - 感謝您試用,但我想,並獲得連接的錯誤信息 - 任何其他的想法? – pete

回答

1

使用ARC,您需要使用__bridge在Foundation和Core Foundation之間進行免費橋接。

試試這個:

CFURLRef url = (__bridge CFURLRef)filePath; 
AudioServicesCreateSystemSoundID(url, &soundID); 
+0

謝謝 - 但是這帶來了3個鏈接器錯誤如下:對於架構I386未定義符號: 「_AudioServicesCreateSystemSoundID」,從引用: - [視圖控制器SOUND2:]在ViewController.o 「_AudioServicesPlaySystemSound」,從引用: - [視圖控制器聲音2:]在ViewController.o ld:符號(s)找不到架構i386 clang:error:鏈接器命令失敗,退出代碼1(使用-v查看調用) – pete

+0

您是否正確導入AudioToolbox框架? – WDUK

+0

不,我沒有 - 我有 - 剛剛添加AudioToolbox和所有工作正常 - 好做,謝謝! – pete