NSFetchRequest版本导致应用程序崩溃

时间:2012-05-09 05:24:22

标签: iphone memory-management crash memory-leaks nsfetchrequest

静态分析器一直告诉我,我的请求对象有+1保留计数,仪器告诉我那里有泄漏。但是,无论我在哪里尝试发布它,它都会让我的应用程序崩溃。它与NSPredicate对象相同。请帮忙,我正在努力满足截止日期。

// 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;

}

1 个答案:

答案 0 :(得分:1)

没有必要释放error对象,因为您不是它的所有者,并且您应该在返回request对象之前释放mutableFetchResults对象,因为您正在创建它使用alloc因此是它的拥有者......

相关问题