Посмотрите на ваш код в
- (void) moviePlaybackDidFinish:(NSNotification*)notification
MPMoviePlayerController *theMovie = [notification object];
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:theMovie];
Вы уверены, что "theMovie" - это созданный вами "moviePlayer"? Я считаю, что это разные адреса памяти, потому что вы не присваивали объект при регистрации уведомления. Убедитесь, что
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlaybackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayer];
Тогда попробуйте еще раз.