核心数据中的内存泄漏

时间:2010-12-15 14:54:57

标签: iphone core-data memory-leaks

有人可以帮助我吗?新的iPhone开发人员。我在Core Data中遇到内存泄漏,我看不到如何修复它。我在UIViewController中运行了这个方法几次(我没有使用Table Viiew):

-(void)fetchEvents: (NSString *) predicateSearch localEvent:thisEvent {
    NSManagedObjectContext *context = [thisEvent managedObjectContext];

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [thisEvent entity];
    [request setEntity:entity];

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
    [request setSortDescriptors:sortDescriptors];

    [sortDescriptors release];
    [sortDescriptor release];

    // Predicate for main screen
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"type matches %@", predicateSearch];
    [request setPredicate:predicate];

    NSError *error;
    NSArray *fetchResults = [context executeFetchRequest:request error:&error];

    if (fetchResults == nil) {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    }

    [self setMyPhotoEventsArray:fetchResults];

    [request release];

}  // fetchEvents

我在仪器中得到了这些内存泄漏:!

Leaked Object # Address Size Responsible Library Responsible Frame  
_PFArray 3 < multiple > 96 CoreData -[NSSQLCore _prepareResultsFromResultSet:usingFetchPlan:withMatchingRows:]

Leaked Object # Address Size Responsible Library Responsible Frame  
GeneralBlock-32 2 < multiple > 64 CoreData PF_ALLOCATE_OBJECT_ARRAY

该方法运行正常,但是,我不断收到这些泄漏

1 个答案:

答案 0 :(得分:0)

很难说你在这里展示了什么,但这是一个猜测:

[self setMyPhotoEventsArray:fetchResults]可能会保留“fetchResults”,然后在View Controller的dealloc和viewDidUnload中,您可能忘记释放它们。

因此,当视图控制器被关闭时,对数组的引用将丢失,并且您有泄漏。