регистрация для NSNotification приводит к сбою моего приложения?

я воспроизводю фильм, используя MPMovieplayerViewController, и я хочу зарегистрироваться для получения уведомлений, когда фильм останавливается... я использую следующий код для использования NSNotification, но мое приложение аварийно завершает работу, когда фильм останавливается... я использовал NSNotification таким же образом ранее, когда он работал нормально.. есть идеи относительно того, что я делаю неправильно??

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(playbackFinishedCallback:)
                                             name:MPMoviePlayerPlaybackDidFinishNotification
                                           object:movie];
[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(moviePlayBackDidFinish:) 
                                             name:MPMoviePlayerPlaybackDidFinishNotification 
                                           object:nil];
- (void) moviePlayBackDidFinish:(NSNotification*)notification
{

NSLog(@"moviePlayBackDidFinish");
    MPMoviePlayerViewController *movie = [notification object];
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                name:MPMoviePlayerPlaybackDidFinishNotification
                                              object:movie];


[self performSelector:@selector(stopRecording) withObject:nil afterDelay:1.0];

}

-(void)playbackFinishedCallback:(NSNotification *)notification{

MPMoviePlayerViewController *movie = [notification object];
[[NSNotificationCenter defaultCenter] removeObserver:self
                                                name:MPMoviePlayerPlaybackDidFinishNotification
                                              object:movie];

NSLog(@"playbackFinishedCallback:");


[self performSelector:@selector(stopRecording) withObject:nil afterDelay:1.0];


}

в моем классе AppDelegate я зарегистрировался так

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    


[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(moviePlayBackDidFinish:) 
                                             name:MPMoviePlayerPlaybackDidFinishNotification 
                                           object:nil];



// Override point for customization after application launch.

// Add the navigation controller's view to the window and display.
[window addSubview:navigationController.view];
[window makeKeyAndVisible];

return YES;
}

- (void)dealloc {

[[NSNotificationCenter defaultCenter] removeObserver:self
                                                name:MPMoviePlayerPlaybackDidFinishNotification
                                              object:nil];

[navigationController release];
[window release];
[super dealloc];

}


person hemant    schedule 29.10.2010    source источник


Ответы (1)


Может быть, это то:

[[NSNotificationCenter defaultCenter] addObserver:self 
                                     selector:@selector(moviePlayBackDidFinish:) 
                                         name:MPMoviePlayerPlaybackDidFinishNotification 
                                       object:nil];

В строке выше вы передаете объект nil и в методе пытаетесь его получить:

MPMoviePlayerViewController *movie = [notification object];
person MathieuF    schedule 29.10.2010