2013-01-12 48 views
1

我一直在网上寻找在Objective C中播放声音的方式,并且我找到了很多答案。但是,当我尝试播放三个“Apple Mach-O链接器错误”时弹出。如何使用AudioServices播放声音效果 - 目标C

这里是我的代码:

viewController.m

-(IBAction)shoot{ 
    tempSound *sound = [[tempSound alloc]init]; 
    [sound playSound:@"test" :@"wav"] 
} 

tempSound.h

#import <UIKit/UIKit.h> 
#import <Foundation/Foundation.h> 
#import <AudioToolbox/AudioToolbox.h> 
#import <AVFoundation/AVFoundation.h> 

@interface tempSound : NSObject{ 
    SystemSoundID audioEffect; 
} 

-(void)playSound: (NSString*) fName : (NSString*) ext; 

@end 

tempSound.m

@implementation tempSound 

-(void)playSound:(NSString *)fName :(NSString *)ext 
{ 
    NSString *path = [[NSBundle mainBundle] pathForResource : fName ofType :ext]; 

    if ([[NSFileManager defaultManager] fileExistsAtPath:path]) { 

     NSURL *pathURL = [NSURL fileURLWithPath:path]; 
     AudioServicesCreateSystemSoundID((__bridge CFURLRef)pathURL, &audioEffect); 
     AudioServicesPlaySystemSound(audioEffect); 
    } 

    else{ 
     NSLog(@"Error, file not found: %@",path); 
    } 


} 

@end 

在此先感谢!

+0

你应该用大写来命名你的类。 –

+0

不是说它会解决你的问题,请查看h2co3的答案,但它会帮助你组织起来。 –

+0

好的,谢谢。我会记住它。 – Bogidon

回答

5

您必须链接到AudioToolbox框架。 (如果您使用的是Xcode,则可以在“构建阶段”部分的“二进制文件链接”选项卡中添加;如果使用的是命令行工具链,则应添加-framework AudioToolbox链接器标记。)

+1

亿万谢谢!我刚刚与AVFoundation联系,谢谢! – Bogidon

+0

我没有收到错误,但现在声音不会播放,虽然我激活了“播放用户界面的声音” – Bogidon

+0

@Bogidon那么,应该在单独的问题:) – 2013-01-12 19:39:34