2012-12-02 11 views
6

Ciao ho cercato qui sul forum ma nessun aiuto trovato quindi lo sto postando nuovo. Ecco lo scenario, sto creando un mfmailcomposeviewcontroller nel RootViewController principale, sto mostriamo chiamando presentviewcontroller ma quando si è respinta ottengo questo errore:errore: l'indirizzo non contiene una sezione che punta a una sezione in un file oggetto

error: address doesn't contain a section that points to a section in a object file 

Il codice sto utilizzando è il seguente:

-(void) mailButtonTapped 
{ 

if ([MFMailComposeViewController canSendMail]) { 

    mailViewController_ = [[MFMailComposeViewController alloc] init]; 
    mailViewController_.mailComposeDelegate = self; 
    [mailViewController_ setSubject:@"Try ..."]; 
    [mailViewController_ setMessageBody:@"Hey I just tried ..." isHTML:NO]; 
    NSData *videoData = [NSData dataWithContentsOfURL:movieURL_]; 
    [mailViewController_ addAttachmentData:videoData mimeType:@"video/quicktime" fileName:@"Video.mov"]; 
    [self presentViewController:mailViewController_ animated:YES completion:nil]; 

} 

else { 

    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Sharing Not Possible" message:@"Configure your mail to send the mail" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
    [alertView show]; 
    [alertView release]; 

    } 
} 

-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{ 

NSString *title = @"Email"; 
NSString *msg = nil; 

if (result == MFMailComposeResultFailed) 
    msg = @"Unable to send, check your email settings"; 
else if (result == MFMailComposeResultSent) 
    msg = @"Email Sent Successfully!"; 
else if (result == MFMailComposeResultCancelled || result == MFMailComposeResultSaved) 
    msg = @"Sending Cancelled"; 

UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:title message:msg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
[alertView show]; 
[alertView release]; 

[self dismissViewControllerAnimated:YES completion:nil]; 

}

Dopo aver respinto ricevo l'errore:

error: address doesn't contain a section that points to a section in a object file 

Please help me

+0

Stai usando ARC? – Max

+0

no, non sto usando – kashif789us

+0

ho provato a rilasciare mailViewController dopo aver chiusoviewcontroller ma non ho avuto fortuna – kashif789us

risposta

-1

Il completamento prevede che un blocco venga chiamato quando l'animazione di licenziamento è completata.

Basta rimuovere "completamento: nil" e dovrebbe funzionare!

Saluti.

+0

: nil è perfettamente a posto ... Non dovrebbe creare problemi in nessuno scenario. – Nishant

15

Ho anche avuto questo errore ma con un altro scenario. Avevo una proprietà di blocco definita con @property (assign, nonatomic).

Per risolvere questo problema, ho dichiarato la proprietà del mio blocco con @property (copia, nonatomico).

Acclamazioni

+0

Grazie per il problema, è ovvio ma impossibile trovarlo da solo -_- ' –

+0

ho avuto lo stesso problema e l'ho risolto ora ..... grazie –

0

Si può usare in questo modo:

MFMailComposeViewController *mailViewController_ = [[MFMailComposeViewController alloc] init]; 
    mailViewController_.mailComposeDelegate = self; 
    [mailViewController_ setSubject:@"Try ..."]; 
    [mailViewController_ setMessageBody:@"Hey I just tried ..." isHTML:NO]; 
    NSData *videoData = [NSData dataWithContentsOfURL:movieURL_]; 
    [mailViewController_ addAttachmentData:videoData mimeType:@"video/quicktime" fileName:@"Video.mov"]; 
    [self presentViewController:mailViewController_ animated:YES completion:nil]; 
[mailViewController_ release]; 
0

Ho anche avuto questo problema, ma causato da un errore molto stupido, ho scritto una proprietà chiamata frame su una classe che eredita da UIView (era un UITableViewCell ma penso che ciò accadrebbe con ogni classe che eredita da UIView) questo ha sovrascritto la proprietà originale frame e ha causato questo errore.

Risolto solo cambiando il nome della proprietà.

1

Questo errore si verifica quando si accede a un oggetto/puntatore che non esiste più. E può anche causare altri errori di accesso, errori di accesso 0x00000, ecc.

Quindi si sta eliminando/rilasciando un puntatore e quindi accedendo in seguito.

Dall'esame del codice, e questa è solo un'ipotesi senza debug, si imposta il delegato del secondo AlertView su se stesso, ma immediatamente si elimina il viewcontroller.

Provare a chiudere dopo che la vista di avviso è stata chiusa o il pulsante è stato premuto, o forse è sufficiente impostare il delegato di AlertView su zero.

Anche se questo non è esattamente l'errore, il motivo principale è da qualche parte dove si sta rilasciando un oggetto, quindi si tenta di chiamare una funzione o accedervi.

Problemi correlati