使用AVAudio播放器播放超过1首歌曲
当第一首歌完成时,调用- (void)audioPlayerDidFinishPlaying:successfully:。
如果我使用该代码,它将正常工作
- (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];
} 它起作用了
但是,如果我不把实例放在音频播放器的预定义属性中,它就不能播放。
以下是代码
- (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];
} 发布于 2014-03-16 23:48:35
ARC代码
AVAudioPlayer *audioPlayer101 = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
[audioPlayer101 play];将针对非ARC编译为
AVAudioPlayer *audioPlayer101 = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
[audioPlayer101 play];
[audioPlayer101 release];audioPlayer101一旦创建就会被释放,因为系统不会自动保留它,释放lead会使播放停止。
如果您像使用代码一样使用instance.audioPlayerForPlay = audioPlayer101;,且audioPlayerForPlay的属性为strong,则播放将按实例保留,因此播放可以继续播放。你可以尝试设置audioPlayerForPlay to be弱`,之前的代码也不会播放。
https://stackoverflow.com/questions/22438272
复制相似问题