Domanda

Ho un'applicazione che utilizza un controller della vista tabella per visualizzare alcuni elementi, dopo aver cliccato su uno di quegli elementi che si possono selezionare per invia questo elemento. Una volta che accade io uso il codice fornito da Apple "MailComposer", e inviare la posta. Tuttavia dopo questo lo scorrimento nella vista tabella non è liscia come prima.

Ho controllato con "fughe di notizie" e non ci sono perdite nel mio codice, tuttavia v'è una grande quantità di allocazione degli oggetti in cui il controller di vista modale per la MFMailComposeViewController, e quando ho respingere mio controller, tutto ciò che di allocazione degli oggetti è ancora lì . Come posso liberarmi di tutto ciò che l'assegnazione oggetto ?. Qualsiasi aiuto sarà molto apprezzato. Grazie.

-Oscar

UPDATE:

ho realizzato il ritardo avviene solo una volta che si clicca su per: campo di testo sulla MFMailComposeViewController e digita qualcosa, una volta che qualcosa è stato digitato ci sarà una perdita di memoria e l'applicazione sarà lenta. Questa stessa cosa avviene anche in Mail Compositore di Apple. Sto usando il simulatore forse questo è il motivo per cui ?. Qualcun altro ha un'esperienza simmilar?

Il modo in cui sto pressenting il mio controller è:

-(void)displayComposerSheet 
{
    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
    picker.mailComposeDelegate = self;

    NSString *mailSubject = appDelegate.mailTitle;
    NSString *mailBody = appDelegate.mailLink;

    NSString *formattedString = [NSString stringWithFormat:@"<a href='%@'>%@</a>", mailBody, mailBody];

    [picker setSubject:mailSubject];

    // Set up recipients
    //NSArray *toRecipients = [NSArray arrayWithObject:@"somemail@hotmail.com"]; 
    //NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com", @"third@example.com", nil]; 
    //NSArray *bccRecipients = [NSArray arrayWithObject:@"fourth@example.com"]; 

    //[picker setToRecipients:toRecipients];
    //[picker setCcRecipients:ccRecipients];    
    //[picker setBccRecipients:bccRecipients];

    // Attach an image to the email (Warning this causes a memory leak aknowledged by Apple)
    //NSString *path = [[NSBundle mainBundle] pathForResource:@"news_icon" ofType:@"png"];
    //NSData *myData = [NSData dataWithContentsOfFile:path];
    //[picker addAttachmentData:myData mimeType:@"image/png" fileName:@"rainy"];

    // Fill out the email body text
    [picker setMessageBody:formattedString isHTML:YES];

    [self presentModalViewController:picker animated:YES];
    [picker release];
}

e dimissing qui:

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{   
    ....
    [self dismissModalViewControllerAnimated:YES];
}
È stato utile?

Soluzione

E 'una perdita di memoria noto nella classe MFMailComposeViewController (come di IOS 4.2 SDK). Le perdite possono essere anche visti in MailComposer progetto di esempio da Apple. Provare a eseguire l'applicazione con strumenti allocazioni e notare i Byte In generale crescono ogni volta che si fa clic su Annulla e mostrare di nuovo il compositore.

Vedi sotto per la discussione simile:

  1. http://discussions.apple.com/thread.jspa?threadID = 2158170

  2. https://devforums.apple.com/thread/23510?tstart = 15

  3. https://devforums.apple.com/message/121093#121093

Altri suggerimenti

Assicurarsi di utilizzare

controller.mailComposeDelegate = self;

e non

controller.delegate = self;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top