2

我的应用程序包含一个表单,用户可以在其中选择一些 PDF 文件,然后将这些文件附加到电子邮件中。所有 PDF 文件都相对较小,介于 250 KB 和 1.0 MB 之间,但如果我在 iPad 3 上附加超过 4 个 PDF 文件(附加一两个似乎没问题),整个应用程序都会崩溃。它不会在模拟器中崩溃。

这是在使用 ARC 的 iOS 5.1 上运行的,所以不应该有泄漏。当我使用 Instruments 使用 Allocations 对其进行分析时,总字节数从 9.3 MB 变为 22.4 MB,这当然是一个峰值,但我认为这不会导致崩溃。

这是我的代码:

if ([MFMailComposeViewController canSendMail]) {
  MFMailComposeViewController *mail = [[MFMailComposeViewController alloc] init];
  mail.modalPresentationStyle = UIModalPresentationFormSheet;
  mail.mailComposeDelegate = self;
  [mail setSubject:subject];
  [mail setMessageBody:body isHTML:NO];

  for (NSString *document in documents) {
    @autoreleasepool {
      NSError *error;
      NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:document ofType:@"pdf"] options:NSDataReadingMappedIfSafe error:&error];
      if (error) {
        NSLog(@"Unresolved error loading document %@, %@", error, [error userInfo]);
      }
      [mail addAttachmentData:data mimeType:@"application/pdf" fileName:document];
      data = nil;
    }
  }

  [self presentModalViewController:mail animated:YES];
}
4

0 回答 0