Метод вызывается, когда мой UIViewController выскочил? - PullRequest
2 голосов
/ 11 мая 2011

У меня есть UIViewController, находящийся в UINavController. Контроллер вида, воспроизводящий аудио через AVAudioPlayer. Когда он появляется, он продолжает воспроизводить звук, хотя в методе dealloc я выпустил аудиоплеер. Я даже пытался настроить аудиоплеер на остановку / паузу перед выпуском его в dealloc, но он не работает.

Итак,

  1. Почему при вызове UIViewController не вызывается dealloc?
  2. Какой метод мне следует использовать, чтобы остановить аудиоплеер непосредственно перед / после того, как контроллер отключен.

РЕДАКТИРОВАТЬ: Я не думаю, что мой контроллер представления сохраняется где-то еще. Вот мой код, когда я выделяю его и помещаю в контроллер nav:

- (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];
}

Ответы [ 3 ]

3 голосов
/ 11 мая 2011

Относительно пункта (2) вы пытались:

- (void)viewDidDisappear:(BOOL)animated

на вашем подклассе контроллера представления узнать, когда он "исчезает"?

0 голосов
/ 12 мая 2011

Назначаете ли вы делегата аудиоплеера, и если да, то содержит ли он ссылку на ВК? Код для класса, который на самом деле имеет проблему, может помочь нам решить эту проблему быстрее. о_О

0 голосов
/ 11 мая 2011

Контроллер nav освобождает контроллер представления, но, поскольку вы сохранили его (с помощью вызова initwithnibname в toqueDetail), и он автоматически освобожден, он не получит dealloc'd до завершения цикла выполнения.Вам не нужно будет использовать удобство Intializer или явно очищать пул автоматического выпуска.

...