テーブルビューコントローラーを使用していくつかのアイテムを表示するアプリケーションがあります。これらのアイテムの1つをクリックすると、このアイテムを電子メールで送信できます。それが起こったら、アップルの「MailComposer」が提供するコードを使用して、メールを送信します。ただし、この後、テーブル ビューでのスクロールは以前ほどスムーズではありません。
「Leaks」でチェックしたところ、コードにリークはありませんでしたが、MFMailComposeViewController のモーダル ビュー コントローラーを使用すると大量のオブジェクトが割り当てられ、コントローラーを閉じると、そのオブジェクトの割り当てはすべて残っています。オブジェクトの割り当てをすべて取り除くにはどうすればよいですか? どんな助けでも大歓迎です。ありがとうございました。
-オスカー
アップデート:
遅延が発生するのは、MFMailComposeViewController の To: テキストフィールドをクリックして何かを入力した場合のみであることに気付きました。何かを入力すると、メモリ リークが発生し、アプリケーションの動作が遅くなります。これとまったく同じことが、Apple の Mail Composer でも発生します。私はシミュレーターを使用していますが、これが理由でしょうか? 他の誰かが同様の経験をしていますか?
コントローラーを押す方法は次のとおりです。
-(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];
}
ここでそれを無視します:
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
....
[self dismissModalViewControllerAnimated:YES];
}