1
我想通過MfMail Composer發送一個CSV文件。一切正常,但使用Instruments時出現很多泄漏。我無法找到我出錯的地方。這裏是我的代碼。使用MFMailComposer時出現內存泄漏
-(NSData *)getCSV
{
NSManagedObjectContext *moc = [(ETAppDelegate *)[[UIApplication sharedApplication] delegate]managedObjectContext];
NSFetchRequest *request = [[[NSFetchRequest alloc]init]autorelease];
[request setEntity:[NSEntityDescription entityForName:@"Expense" inManagedObjectContext:moc]];
NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error:&error];
NSMutableArray *expensesList = [[[NSMutableArray alloc]init]autorelease];
for(int i = 0;i<[results count];i++){
NSString *category = [[results objectAtIndex:i]valueForKey:@"category"];
NSString *date = [[NSDateFormatter dateFormatterwithMediumStyle]stringFromDate:[[results objectAtIndex:i]valueForKey:@"date"]];
NSString *amount = [NSNumberFormatter localizedStringFromNumber:[[results objectAtIndex:i]valueForKey:@"amount"] numberStyle:NSNumberFormatterCurrencyStyle];
NSString *mailString = [NSString stringWithFormat:@"%@,%@,%@",category,date,amount ];
[expensesList addObject:mailString];
}
NSString *expensesString = [expensesList componentsJoinedByString:@"\n"];
NSData *expensesData = [expensesString dataUsingEncoding:NSUTF8StringEncoding];
return expensesData;
}
-(void)displayComposerSheet
{
NSData *csvFile = [self getCSV];
NSString *csvFileName = @"MyExpenses";
MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc]init];
[mailController setSubject:@"List Of Expenses"];
[mailController setMessageBody:@"Expenses" isHTML:NO];
[mailController addAttachmentData:csvFile mimeType:@"text/csv" fileName:csvFileName];
[mailController setMailComposeDelegate:self];
[self presentModalViewController:mailController animated:YES];
[mailController release];
}
感謝suggestions.And是的,我只是刪除了代碼和檢查,內存泄漏仍然看完,你在哪裏任何想法,這些泄漏都不可能是...因爲我一旦發送郵件就會發生這些泄漏。 – ichanduu 2013-04-29 15:12:57
@Chandubhai如果沒有看到更多的代碼,我很難說。我能想到的唯一問題是:你在使用'-getCSV'返回的那個'NSData'實例做什麼?我的意思是,就「-displayComposerSheet」而言,我可以看到你在做什麼。你能否以某種方式將它保留在其他地方,並且無法釋放它? – trudyscousin 2013-04-29 15:18:16
不,這是我使用它的唯一方法。 – ichanduu 2013-04-29 15:28:52