MPMoviePlayerViewController нежелательная проблема воспроизведения - PullRequest
0 голосов
/ 20 октября 2010

В Ipad (IOS 3.2) я работаю над приложением, которое должно играть в .mov. Когда видео (находящееся в startUpVC ) закончится, оно вызовет другой виртуальный канал для страницы приветствия. После нескольких изменений VC, когда я вызвал функцию [viewController.view removefromSuperView] в делегате, я обнаружил, что приложение вызывает startUpVC (в фоновом режиме) без каких-либо кодов. Вот мои коды:

Inside StartupVC

- (void)loadMovie {
NSLog(@"Load Movie");   
NSString *path = [[NSBundle mainBundle] pathForResource:@"opening3" ofType:@"mov" inDirectory:nil];
NSURL *movieURL = [NSURL fileURLWithPath:path];
MPMoviePlayerViewController *theMoviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:movieURL];
theMoviePlayer.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
[theMoviePlayer.moviePlayer setControlStyle:MPMovieControlStyleNone];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieCallback:)
                                             name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
[theMoviePlayer.moviePlayer.view setFrame:self.view.bounds];
[theMoviePlayer.moviePlayer.view setTransform:CGAffineTransformMakeRotation(M_PI / 2)]; [self.view addSubview:theMoviePlayer.view];
MPMoviePlayerController *startPlayer = [theMoviePlayer moviePlayer];
[startPlayer play];

В делегате

- (void)goTitle {
NSLog(@"go title");
IPAD03ViewController *vc = [[IPAD03ViewController alloc] initWithNibName:@"IPAD03ViewController" bundle:nil];
[viewController.view removeFromSuperview];
[window addSubview:vc.view];


- (void)goStart {
NSLog(@"go Start");
PageViewerVC *vc = [[PageViewerVC alloc] initWithPhotoSource:[PageSet samplePhotoSet]];
[viewController.view removeFromSuperview];
[window addSubview:vc.view];
- (void)goCredits {
NSLog(@"go credits");
CredtisVC *vc = [[CredtisVC alloc] initWithNibName:@"Credits" bundle:nil];
NSLog(@"1st");
[viewController.view removeFromSuperview];
NSLog(@"2nd");
[window addSubview:vc.view];

Скорее всего, когда я закончу (начну) и вызову делегата для функции goCredits, после (1-го) ([viewController.view removeFromSuperview];) программа снова воспроизведет фильм в фоновом режиме ....

Спасибо!

1 Ответ

0 голосов
/ 19 апреля 2011

у вас там какая-то запутанная сеть звонков, и movieCallBack не отображается. Ваша проблема пахнет как чрезмерный выпуск памяти, который затем исчезает указатели на эти методы. У вас есть зомби?

...