1.控制器代码
#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
#import "RYAVTool.h"
@interface ViewController ()
@property(nonatomic,strong)NSMutableDictionary*allAvID;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
self.allAvID= [RYAVTool playAVWithName:@"m_06.wav"];
}
//内存警告时清理缓存
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
[self.allAvID enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
AudioServicesDisposeSystemSoundID([obj unsignedIntValue]);
}];
}
@end
2.辅助工具类代码
#import <Foundation/Foundation.h>
@interface RYAVTool : NSObject
+(NSMutableDictionary*)playAVWithName:(NSString*)name;
@end
#import "RYAVTool.h"
#import <AVFoundation/AVFoundation.h>
static NSMutableDictionary *_allID;
static SystemSoundID _currentData;
@implementation RYAVTool
+(void)load
{
if (_allID==nil) {
_allID =[[NSMutableDictionary alloc]init];
}
}
+(NSMutableDictionary*)playAVWithName:(NSString*)name
{
if (!name) {
return _allID;
}
NSString*path=[[NSBundle mainBundle]pathForResource:name ofType:nil];
if (!path) {
return _allID;
}
NSURL *url=[NSURL fileURLWithPath:path];
_currentData=[_allID[name] unsignedIntValue];
if (!_currentData) {
//创建音频播放文件
AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &_currentData);
//保存
_allID[name]=@(_currentData);
}
//播放
AudioServicesPlayAlertSound(_currentData);
return _allID;
}
@end