我的应用程序包含一个表单,用户可以在其中选择一些 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];
}