0

The static analyzer keeps telling me that I have a +1 retain count for my request object and instruments tells me there is a leak there. However, no matter where I try to release it, it keeps crashing my app. It's the same with NSPredicate object. Please do help, I'm trying to meet a deadline.

// Fetch Requests

// Method that returns an array of NSManagedObjects in the managedObjectContext with a predicate of who ordered

- (NSArray *)fetchDataWithEntity:(NSString *)entity andSortKey:(NSString *)key andPerson:(Person *)whoOrdered

{

 NSFetchRequest *request = [[NSFetchRequest alloc] init];

 NSEntityDescription *entityDescription = [NSEntityDescription entityForName:entity 

                                                                   inManagedObjectContext:managedObjectContext];

 request.entity = entityDescription;



 // Handling Sorting

 NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:key ascending:YES 

                                                                                 selector:@selector(compare:)];

 NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];

 [request setSortDescriptors:sortDescriptors];

 [sortDescriptor release];

 [sortDescriptors release];



 // Handling Predicate

 if (whoOrdered) {

      NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ == whoOrdered", whoOrdered];

      [request setPredicate:predicate];

 }



 NSError *error = nil;

 NSArray *mutableFetchResults = [managedObjectContext executeFetchRequest:request error:&error];

 //[request release];

 [error release];

 if (mutableFetchResults == nil) {

      // Handle the error

 }

 return mutableFetchResults;

}

NSCoder
  • 1,594
  • 5
  • 25
  • 47

1 Answers1

1

There is no need to release the error object since you are not the owner of it and you should release the request object just before returning the mutableFetchResults object since you are creating it using alloc and thus are the owner of it ...

Ankit Srivastava
  • 12,347
  • 11
  • 63
  • 115
  • Thanks for noticing that, but it still doesn't work. Where ever I try to release request, it crashes. I also get 56.73% [request setPredicate:[NSPredicate predicateWithFormat:@"...", whoOrdered]]; as a source of my leak. – NSCoder May 09 '12 at 15:54