首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVAudioPlayer问题

AVAudioPlayer问题
EN

Stack Overflow用户
提问于 2014-03-16 22:40:13
回答 1查看 106关注 0票数 0

使用AVAudio播放器播放超过1首歌曲

当第一首歌完成时,调用- (void)audioPlayerDidFinishPlaying:successfully:

如果我使用该代码,它将正常工作

代码语言:javascript
复制
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
    NSString *tempString = @"/";
    tempString  = [tempString stringByAppendingString:name];
    NSString *path = [NSString stringWithFormat:@"%@",[[NSBundle mainBundle] resourcePath]];
    path = [path stringByAppendingString:tempString];
    NSURL *url = [NSURL fileURLWithPath:path];
    NSError *error;

    AVAudioPlayer  *audioPlayer101 = [[AVAudioPlayer alloc] initWithContentsOfURL:url    error:&error];

    [AppDelegate getAppdelegate].audioPlayerForPlay = audioPlayer101;
    [[AppDelegate getAppdelegate].audioPlayerForPlay play];
} 

它起作用了

但是,如果我不把实例放在音频播放器的预定义属性中,它就不能播放。

以下是代码

代码语言:javascript
复制
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
    NSString *tempString = @"/";
    tempString  = [tempString stringByAppendingString:name];
    NSString *path = [NSString stringWithFormat:@"%@",[[NSBundle mainBundle] resourcePath]];
    path = [path stringByAppendingString:tempString];
    NSURL *url = [NSURL fileURLWithPath:path];
    NSError *error;

    AVAudioPlayer  *audioPlayer101 = [[AVAudioPlayer alloc] initWithContentsOfURL:url    error:&error];
    [audioPlayer101  play];
} 
EN

回答 1

Stack Overflow用户

发布于 2014-03-16 23:48:35

ARC代码

代码语言:javascript
复制
AVAudioPlayer  *audioPlayer101 = [[AVAudioPlayer alloc] initWithContentsOfURL:url    error:&error];
[audioPlayer101  play];

将针对非ARC编译为

代码语言:javascript
复制
AVAudioPlayer  *audioPlayer101 = [[AVAudioPlayer alloc] initWithContentsOfURL:url    error:&error];
[audioPlayer101  play];
[audioPlayer101 release];

audioPlayer101一旦创建就会被释放,因为系统不会自动保留它,释放lead会使播放停止。

如果您像使用代码一样使用instance.audioPlayerForPlay = audioPlayer101;,且audioPlayerForPlay的属性为strong,则播放将按实例保留,因此播放可以继续播放。你可以尝试设置audioPlayerForPlay to be弱`,之前的代码也不会播放。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22438272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档