核心数据NSSortDescriptor导致内存泄漏

时间:2010-07-10 19:25:13

标签: core-data memory-leaks nssortdescriptor

当我向Core Data中的Fetch Request添加排序描述符时,我收到了内存泄漏。如果我注释掉NSSortDescriptor块,它会在没有内存泄漏的情况下运行。

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

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Pools" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"game.league.id=%i",[lid intValue]];
[fetchRequest setPredicate:predicate];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"game.date" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[sortDescriptors release];
[sortDescriptor release];

NSError *error;
NSArray *items = [managedObjectContext executeFetchRequest:fetchRequest error:&error];

// Do Something

[fetchRequest release];
[items release];

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在排序描述符中,您使用关键路径game.date来处理关系。

您的泄漏可能与密钥路径中的其中一个对象有关。删除排序时它会消失,因为键路径中的对象不会执行任何操作。

如果您在game实体中有临时属性,自定义访问器,非实体属性等,我会在那里查看。定制价值变形金刚也是一个不错的选择。

Instrument中的堆栈应该准确告诉您哪个对象正在泄漏。