0

Я создал приложение, в котором пользователь использует переднюю камеру, чтобы делать снимки и отправлять их по электронной почте, и приложение никогда не переходит в фоновый режим не менее 8 часов; приложение отображается в офисе и всегда должно быть на переднем плане. Все происходит в UIViewController.Управление памятью MFMailComposeViewController

Проблема с MFMailComposeViewController, особенно с памятью, которую он потребляет. В «Инструменты - Монитор активности» есть MailCompositionS, который продолжает увеличиваться при использовании реальной памяти.

Мой код:

- (void)emailPhoto 
{ 
    NSString *emailTitle; 
    NSString *messageBody; 

    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init]; 
    mc.mailComposeDelegate = self; 
    [mc setSubject:emailTitle]; 
    [mc setMessageBody:messageBody isHTML:NO]; 

    NSData *dataImage = UIImageJPEGRepresentation(photoView.image, 0.4); 
    [mc addAttachmentData:dataImage mimeType:@"image/jpeg" fileName:@"image.jpg"]; 

    [self presentViewController:mc animated:YES completion:nil]; 

    mc = nil; 
    dataImage = nil; 
} 

- (void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error 
{ 
    [self dismissViewControllerAnimated:YES completion:^{ 

     [self backToCamera]; 
    }]; 
} 

Я действительно не понимаю, что может быть проблема. С или без вложения изображения MailCompositionS продолжает увеличиваться в потреблении памяти, и поскольку приложение всегда остается в этом UIViewController и никогда не переходит в фоновый режим, память никогда не выпускается.

PS Я не обнаруживаю утечек.

ответ

0

Я думаю, вам нужно создать один экземпляр MFMailComposeViewController в собственности. вместо создания экземпляра для каждой фотографии. просто скопируйте пары линий. self.mc = [[MFMailComposeViewController alloc] init]; mc.mailComposeDelegate = self; в viewDidLoad() или viewWillAppear().

Good Luck

+0

Мне нужно использовать несколько раз MFMailComposeViewController, если я Alloc Инициализировать viewDidLoad во второй раз мне нужно отправить по электронной почте не будет работать. – Macaret

Смежные вопросы