我试图对Core Data实体的关系进行排序。例如,有一个雇员对象,它有部门关系。
departments
(NSSet
),它让我分类了部门我使用的代码如下。
[tempArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
我发现即使在一段时间后内存也会被保留,并且核心数据对象也会在很长一段时间后保留。
我删除了这条线,认为这可能是原因
//[moc setRetainsRegisteredObjects:YES];
但这没有帮助。我想了解核心数据对象的NSSet
上的所有对象方法是否会导致内存崩溃并且sortedArrayUsingDescriptors
执行深层复制?
我知道它是一个浅层副本,请确认,即使在使用sortedArrayUsingDescriptors
使用对象数组后,内存仍然保留的逻辑原因。
答案 0 :(得分:0)
正如我在评论中所述,您应该为您的问题提供一些背景信息。那么,你在Instrument中看到过这种行为吗?
无论如何,您可以根据特定的谓词(而不是NSFetchRequest
对基于特定谓词的setSortDescriptors:
进行提取并同时进行排序(而不是Department
),而不是提取然后排序。很好地理解你的问题,谓词将为你提供属于特定员工的部门。这样,排序就在SQL级别完成。
您还应该提供您正在使用的代码
[tempArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
sortDescriptor
怎么样?如果您不使用ARC,则alloc-init
新sortDescriptor
您必须将其取消。否则你会有泄漏。