0

Wenn ich versuche, ein Video zu laden, bekomme ich eine SIGABRT geworfen. Unten ist mein Code. Wenn mir jemand sagen könnte, warum ich diesen Fehler bekomme, wäre das großartig. Das Signal wird für die Zeile ausgelöst: theMovie = [[MPMoviePlayerController alloc] initWithContentURL: [NSURL fileURLWithPath: url]];Das Signal SIGABRT bekommen, wenn ich versuche, ein Video abzuspielen (Objective-C)

Zwei Fragen: Was ist falsch an meinem Code? und was bedeutet SIGABRT normalerweise?

#import "Video.h" 
#import "MyManager.h" 

#import

@implementation Video 

MPMoviePlayerController* theMovie; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 

    } 
    return self; 
} 

- (void)dealloc{ 
    [theMovie release]; 
    [super dealloc]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

#pragma mark - View lifecycle 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    MyManager *sharedManager = [MyManager sharedManager]; 
    NSString *tempName = sharedManager.vidName; 
    NSString *url = [[NSBundle mainBundle] pathForResource:sharedManager.vidName ofType:@"mp4"]; 
    theMovie = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:url]]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinishedCallBack:) name:MPMoviePlayerPlaybackDidFinishNotification object:theMovie]; 
    theMovie.scalingMode = MPMovieScalingModeAspectFit; 
    [theMovie.view setFrame:self.view.bounds]; 
    [self.view addSubview:theMovie.view]; 
    [theMovie play]; 

    } 

-(void)movieFinishedCallBack:(NSNotification *) aNotification{ 
    theMovie = [aNotification object]; 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:theMovie]; 
    [theMovie.view removeFromSuperview]; 
    [theMovie pause]; 
    [theMovie stop]; 
} 

-(void) viewWillDisappear:(BOOL)animated{ 
    [theMovie pause]; // assume myMoviePlayer is an instance variable 
    [theMovie stop]; 
    theMovie = nil; 
    [theMovie release]; 
} 

- (void)viewDidUnload 
{ 
    [theMovie pause]; // assume myMoviePlayer is an instance variable 
    [theMovie stop]; 
    theMovie = nil; 
    [theMovie release]; 

    [super viewDidUnload]; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

@end 
+0

Wissen Sie, wie man den Unfallbericht sieht? Die Überprüfung kann Ihnen Anhaltspunkte geben. Es könnte durch eine nicht abgefangene Ausnahme verursacht werden – tams

+0

@tams Ich bin sehr neu in der iPhone-Entwicklung und das ist mein erstes Projekt überhaupt in Objective-c. Ich weiß nicht, wie ich den Absturzbericht sehen soll. Wie kann ich dazu kommen? Ist das genau das, was im Ausgabeprotokoll steht? Im Protokoll heißt es: Beenden wird aufgerufen, nachdem eine Instanz von 'NSException' geworfen wurde. –

+0

ok, ich denke, wenn Sie neu sind, können Sie mit dem Debuggen Ihrer Ansicht beginnen. Platzieren Sie einen Haltepunkt am Anfang der Methode und durchlaufen Sie den Code. Stellen Sie sicher, dass alle Ihre Variablen korrekt sind und dass Ihre Strings korrekt gesetzt werden. Vielleicht liegt das Problem dort. – tams

Antwort

0

ich, dass SIGABRT Fehler in der Regel finden werden angezeigt, wenn Sie versuchen, auf ein Objekt zuzugreifen, die nicht vorhanden ist oder eine Nullreferenz ist. Vielleicht ist dein Problem, dass die Datei nicht existiert oder du irgendwo einen Verweis auf deine Datei oder dein Videoplayer-Objekt verloren hast.

Peter

Verwandte Themen