我的Xcode应用程序播放许多不同的音频文件。似乎有内存泄漏最终导致应用程序崩溃。我应该释放音频播放器的记忆吗?我需要什么额外的代码来释放这些?我大约有400个音频文件。
NSString *file1Path = [[NSBundle mainBundle] pathForResource:@"50"ofType:@"mp3"];
NSURL *file1URL = [[NSURL alloc] initFileURLWithPath:file1Path];
file1Player = [[AVAudioPlayer alloc] initWithContentsOfURL:file1URL error:nil];
[file1Player play];
我可以添加这段代码吗?
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
[file1Player release];
file1Player=nil;
}
答案 0 :(得分:1)
您已建议添加[file1Player release]
。
如果您正在使用自动参考计数,则不仅没有必要,而且不允许这样做。但是,如果使用手动参考计数,则必不可少。但是请确保指定delegate
中的AVAudioPlayer
,否则将不会调用该方法。
如果您使用手动引用计数,建议您使用 shift + 命令 + B (或“产品”»“分析”)执行静态分析。特别是在手动引用计数代码中(甚至在ARC Objective-C代码中),此静态分析器是一个非常有用的工具。在解决了那里确定的所有问题之前,没有任何必要进行。
或者,按照您的建议,甚至更好,将您的人工参考计数项目转换为自动参考计数。