最近在使用AVAudioPlayer播放音频时,发现有内存泄漏的现象,我的代码如下:
-(id)init
{
if (self = [super init]) {
NSString *path = [[NSBundle mainBundle] pathForResource:@"GameOver" ofType:@"mp3"];
NSError *error = nil;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&error];
audioPlayer.delegate = self;
[audioPlayer prepareToPlay];
audioPlayer.numberOfLoops = -1;
[audioPlayer play];
}
return self;
}
-(void)dealloc
{
if (audioPlayer && [audioPlayer isPlaying]) {
[audioPlayer stop];
}
[audioPlayer release];
audioPlayer = nil;
[super dealloc];
}
Looks to be a leak in Apple's code... I tried using both
-
-[AVAudioPlayer initWithData:error:]
and
-[AVAudioPlayer initWithContentsOfURL:error:]
In the first case, the allocated AVAudioPlayer
instance retains the passed in NSData
. In the second, the passed in NSURL
is retained:
也就是说使用AVAudioPlayer播放音频时,NSData或NSURL被retain了,所以,我在dealloc方法中将其release,内存泄漏就解决了:
-(void)dealloc
{
[audioPlayer.url release];
if (audioPlayer && [audioPlayer isPlaying]) {
[audioPlayer stop];
}
[audioPlayer release];
audioPlayer = nil;
[super dealloc];
}
分享到:
相关推荐
iOS之AVAudioPlayer使用实例
IOS下使用AVAudioPlayer播放MP3(支持后台播放) XCode 4.6.3下编译测试运行通过,真机测试通过
AVAudioPlayer类轻松实现音频播放,资源内已经对系统AVAudioPlayer做了C++类的封装,使用的时候直接调用接口即可
本实例实现了AVAudioPlayer播放mp3歌曲文件,实现了播放、暂停、继续操作,音乐音量控制、播放进度显示,同时监听来电打断事件
AVAudioPlayer的使用,完整代码,详细备注
AVAudioPlayer.zip
支持后台播放,锁屏操作(播放暂停,锁屏状态设置显示信息) 由于只能上传5M的包,所以只放了一个本地MP3文件 // 第一步: 找到 TARGETS-->Capabilities-->Background Modes -->(打开)Audio,AirPlay and Picture...
本例使用 AVAudioPlayer 组成数组,来实现播放不同音乐、系统提示音的效果;并通过block来执行播放前、播放结束、播放停止的效果,适应项目的需要。
主要介绍了iOS App中调用AVAudioPlayer播放音频文件的用法,AVAudioPlayer仅能播放本地文件而不能添加网络源,实例代码为Objective-C,需要的朋友可以参考下
AVAudioPlayer播放本地音频 很基本的一个demo
自己写的一个AVAudioPlaye简单播放器,实现,播放,暂停,顺序播放,单曲播放等。
iPhone应用开发从入门到精通作者:杨帆 郑青青 王凤筱 编著前 言入 门 篇第1章 iPhone OS介绍 21.1 iPhone OS预览21.1.1 iPhone OS的发展历史21.1.2 iPhone OS的外观31.1.3 多任务特性31.1.4 不支持的技术...
Cephalopod,一种用Swift编写的AvAudioPlayer的声音衰减器-iOS,tvOS和macOS该库可以帮助通过AvAudioPlayer淡入或淡出声音。 可以设置持续时间,淡入淡出的速度和完成功能。 Velo Cephalopod,一种用Swift编写的...
利用AVAudioRecorder录音 利用AVAudioPlayer播放 AVAudioSession录音权限 简单的录音播放demo,类似微信的按下录音,松开录音完成,并播放。
我自己写的用AVAudioPlayer实现后台播放和远程控制、我自己写的用AVAudioPlayer实现后台播放和远程控制、我自己写的用AVAudioPlayer实现后台播放和远程控制
Chapter 9: Creating an Audio-Centric App for the iPhone with AVAudioPlayer Chapter 10: Implementing Push Notifications at eBuddy amazon link:...
里我们要介绍的是AVAudio ToolBox框架中的AudioServicesPlaySystemSound函数创建的服务,特别适合用来制作铃声,下面就简单整理一下iOS中的音频服务和音频AVAudioPlayer音频播放器使用指南:
AVAudioPlayer播放音乐,支持后台播放,参考iOS图形图像一书,自己添加了支持后台播放还有注释
利用AVAudioRecorder录音 利用AVAudioPlayer播放 AVAudioSession录音权限 简单的录音播放demo,类似微信的按下录音,松开录音完成,并播放。