如何在ios5中播放AVAudioPlayer本地方法



我认为它与iOS 5中的ARC有关,但当我在方法中声明AVAudioPlayer并播放它时,它不会播放。我认为它会在功能结束时自动释放因为我不记得这个在iOS5之前发生过。如果我把它设为全局变量,就没问题了。有办法使用本地实例吗?

让它成为一个保留属性,并让你的类成为委托,这样你就可以在它完成播放后进行清理。标题:

@interface MyClass : NSObject <AVAudioPlayerDelegate>
@property(strong)AVAudioPlayer *player;

然后,当你使用时:

self.player = [AVAudioPlayer alloc] initWithContentsOfURL:URL error:&err];
[player setDelegate:self];

并在委托方法中清理:

-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)playedSuccessfully {
    self.player = nil;
}

把它作为属性的一个好处是,如果你需要的话,你可以打断它:

-(void)someInterruptionOccurred {
    [self.player stop];
}

最新更新