Frage

Ich habe eine Anwendung, die eine Tabelle View-Controller verwendet einige Elemente anzuzeigen, nachdem auf einem dieser Elemente, klicken Sie können sich diesen Artikel per E-Mail. Sobald das geschieht ich den von Apple bereitgestellten Code verwenden „MailComposer“, und die E-Mail senden. Doch danach das Scrollen in der Tabellenansicht ist nicht so glatt wie zuvor.

ich mit „Leaks“ geprüft und es gibt keine Lecks in meinem Code, aber es ist sehr viel Objektzuordnung, wenn die modale View-Controller für die MFMailComposeViewController, und wenn ich mein Controller entlassen, alles, was Objektzuordnung ist immer noch da . Wie kann ich all das Objektzuordnung loszuwerden ?. Jede Hilfe wird sehr geschätzt. Danke.

-Oscar

UPDATE:

Ich habe die Verzögerung nur realisiert geschieht, wenn Sie auf der klicken: auf dem MFMailComposeViewController sehene Feld ein und etwas geben, einmal etwas eingegeben wurde es wird ein Speicherleck sein und die Anwendung wird träge. Das gleiche geschieht auch in Apples Mail-Composer. Ich bin mit dem Simulator vielleicht ist das, warum ?. Hat jemand eine simmilar Erfahrung?

Die Art, wie ich meinen Controller am pressenting ist:

-(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];
}

und dimissing es hier:

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

Lösung

Es ist ein bekanntes Speicherleck in MFMailComposeViewController Klasse (ab iOS 4.2 SDK). Die Lecks können auch in dem MailComposer Beispielprojekt von Apple zu sehen. Versuchen Sie, die App mit Verrechnungen Instrument laufen und beachten Sie die Gesamt Bytes aufwächst Sie jedes Mal, klicken abzubrechen und zeigen den Komponisten wieder.

Siehe unten für die ähnliche Diskussion:

  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

Andere Tipps

Achten Sie darauf,

controller.mailComposeDelegate = self;

und nicht

controller.delegate = self;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top