我有一个驻留在UINavController中的UIViewController。通过AVAudioPlayer播放音频的视图控制器。当它开始变形时,它会继续播放音频,即使在dealloc方法中我发布了音频播放器。我甚至尝试将audioplayer设置为在dealloc中释放之前停止/暂停,但它不起作用。
所以,
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *name = [tableData objectAtIndex:[indexPath row]];
ToquesDetailVC *toqueDetail = [[ToquesDetailVC alloc] initWithNibName:@"ToquesDetail"
audioPath:[[NSBundle mainBundle] pathForResource:name ofType:@"mp4"]
imageNamed:[[NSBundle mainBundle] pathForResource:name ofType:@"jpg"]];
[[self navigationController] pushViewController:toqueDetail animated:YES];
[toqueDetail release];
}
答案 0 :(得分:3)
关于第(2)点你是否尝试过:
- (void)viewDidDisappear:(BOOL)animated
在你的视图控制器子类上知道它什么时候“消失”?
答案 1 :(得分:0)
导航控制器确实释放了视图控制器,但由于你保留了它(将initwithnibname调用到toqueDetail中),并且它已自动释放,因此在运行循环完成之前不会释放dealloc。您必须要么不使用便利性初始化程序,要么明确清除自动释放池。
答案 2 :(得分:0)
您是否正在分配音频播放器代理,如果是,是否持有对VC的引用?实际存在问题的类的代码可能会帮助我们更快地解决这个问题。 O_O