Iphone 在NSTimer中播放AVAudioPlayer,而不存在内存泄漏?
这对我来说是一个长期存在的问题,我一直无法解决。 我正在播放一系列小音频文件。但是,如果我不释放Iphone 在NSTimer中播放AVAudioPlayer,而不存在内存泄漏?,iphone,objective-c,ios,cocoa-touch,avaudioplayer,Iphone,Objective C,Ios,Cocoa Touch,Avaudioplayer,这对我来说是一个长期存在的问题,我一直无法解决。 我正在播放一系列小音频文件。但是,如果我不释放AVAudioPlayer,我就会出现内存泄漏,如果我释放了它,文件就根本不会播放 我试过自动释放,但没有效果 - (void) playSoundShowLabel:(NSTimer*)theTimer { NSMutableDictionary *dict = [[[NSMutableDictionary alloc] initWithDictionary:[theT
AVAudioPlayer
,我就会出现内存泄漏,如果我释放了它,文件就根本不会播放
我试过自动释放,但没有效果
- (void) playSoundShowLabel:(NSTimer*)theTimer {
NSMutableDictionary *dict = [[[NSMutableDictionary alloc]
initWithDictionary:[theTimer userInfo]] autorelease];
NSURL *clickURL = [NSURL fileURLWithPath:[NSString
stringWithFormat:@"%@/%@.mp3", [[NSBundle mainBundle] resourcePath],
[dict valueForKey:@"sWav"]]];
AVAudioPlayer *theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:
clickURL error:nil];
[theAudio play];
theAudio.numberOfLoops = 0;
//[theAudio release]; << stops play
}
-(无效)播放声音显示标签:(n计时器*)计时器{
NSMutableDictionary*dict=[[NSMutableDictionary alloc]
initWithDictionary:[theTimer userInfo]]自动释放];
NSURL*clickURL=[NSURL fileURLWithPath:[NSString]
stringWithFormat:@“%@/%@.mp3”,[[NSBundle mainBundle]resourcePath],
[dict valueForKey:@“sWav”]];
AVAudioPlayer*音频=[[AVAudioPlayer alloc]initWithContentsOfURL:
单击URL错误:无];
[音频播放];
theAudio.numberOfLoops=0;
//[theAudio release];为播放器使用一个实例变量,并确保它在音频结束或应中止之前保持有效
对于前者,使用其委托-对于后者,使用viewDidUnload或dealloc
现在,我假设您没有使用ARC
在接口声明中:
@interface HoldingThePlayerSomeViewController : UIViewController <AVAudioPlayerDelegate>
{
AVAudioPlayer *theAudio;
}
为播放器使用一个实例变量,并确保它在音频结束或应中止之前保持有效
对于前者,使用其委托-对于后者,使用viewDidUnload或dealloc
现在,我假设您没有使用ARC
在接口声明中:
@interface HoldingThePlayerSomeViewController : UIViewController <AVAudioPlayerDelegate>
{
AVAudioPlayer *theAudio;
}
您需要创建一个AvaudioPlayerLegate,以便在播放完成后被召回。在那里您可以解除分配您的AVAudioPlayer。您需要创建一个AvaudioPlayerLegate,以便在播放完成后被召回。在那里您可以解除分配您的AVAudioPlayer