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];
}
덕분에 그래 난 그냥 코드를 제거하고 확인하고 메모리 누수는 여전히 당신이 누출 가능성이 수에 대해 어떤 생각을 there.do됩니다
다음은 제안을 적용하여 루프의 나는 메일이 보내지면 누출이 생기기 때문에. – ichanduu
@Chandubhai 코드를 더 이상 보지 않으면 말하기가 어려울 것입니다. 내가 생각할 수있는 유일한 질문은 :'-getCSV'에서 리턴하는'NSData'의 인스턴스로 무엇을하고 있습니까? 제 말은,'-displayComposerSheet '에 관한 한 당신이 뭘하는지 볼 수 있습니다. 여하튼 어딘가에 다른 곳에 보관할 수 있습니까? – trudyscousin
그게 유일한 방법은 내가 그것을 사용하고 있습니다. – ichanduu