博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
音效播放
阅读量:7174 次
发布时间:2019-06-29

本文共 1328 字,大约阅读时间需要 4 分钟。

#import "PlayAudioTool.h"#import 
//定义一个全局的缓存池变量, 因为音效它会一直添加到内存中,当继续添加音效时, 内存储存不了,此时就会将内存底部的一个音效移除, 然后添加新的, 虽然这个能够存储音效, 但是对与内存而言,任然是饱满, 所以我们这个就定义一个缓存池, 第一是不让相同的音效重复加载到内存中区,第二是当内存发出内存警告时, 我们可以在applicationDidReceiveMemoryWarning:(UIApplication *)application这个方法中将缓存池中的音频对象移除,从而达到内存优化的目的static NSMutableDictionary * dict ;@implementation PlayAudioTool//当类被加载, 也就是被编译是就会调用这个方法, 给缓存池字典初始化+(void)load{ dict = [NSMutableDictionary dictionary]; }+(void)playAudioWithFileName:(NSString *)fileName isAlert:(BOOL)alert{ //获取音效资源 NSString * path = [[NSBundle mainBundle]pathForResource:fileName ofType:nil]; NSURL * url = [NSURL fileURLWithPath:path]; //创建一个soundID SystemSoundID sound ; AudioServicesCreateSystemSoundID((__bridge CFURLRef _Nonnull)(url), &sound); if (alert) { //播放时带振动 AudioServicesPlayAlertSound(sound); }else{ //播放 //播放是音效, 不震动 AudioServicesPlaySystemSound(sound); } }+(void)clearMeary { for (NSString * key in dict) { SystemSoundID sound = [dict[key]unsignedIntValue]; AudioServicesDisposeSystemSoundID(sound); } //将缓存池中的所有对象移除 [dict removeAllObjects]; }

  

转载于:https://www.cnblogs.com/yuwei0911/p/5449270.html

你可能感兴趣的文章
Centos Mysql 编译安装调试
查看>>
Midamble Allocation by layer 1
查看>>
孤荷凌寒自学python那些事第一天
查看>>
File server文件夹权限变更记录
查看>>
T-sql语句中GO的作用及语法
查看>>
我的友情链接
查看>>
【大数据-第二期】java基础第四天作业
查看>>
我的友情链接
查看>>
Fedora 18 -- Guides PDF
查看>>
Django+Nginx+Uwsgi架构部署,新建个app添加web(二)
查看>>
MySQL按月/按周统计查询
查看>>
JavaScript之css操作总结
查看>>
Django1.10.x i18n国际化
查看>>
我的友情链接
查看>>
在ubuntu上安装LightTable IDE
查看>>
Dubbo 调研过程
查看>>
监控软件cacti添加主机
查看>>
常用汉字编码
查看>>
Spring+hibernate事务详解
查看>>
spring集成并配制quartz
查看>>