【问题标题】:Core Data and NSSortDescriptor - memory basicsCore Data 和 NSSortDescriptor - 内存基础
【发布时间】:2014-04-14 10:05:26
【问题描述】:

我正在尝试对核心数据实体的关系进行排序。例如有一个员工对象,它有部门关系。

  1. 我对员工执行 NSFetchRequest
  2. 我写了一个方法来取出departments (NSSet),它可以让我对部门进行分类

我使用的代码如下。

[tempArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

我看到内存在一段时间后仍被保留,并且其中的核心数据对象在很长一段时间后仍被保留。

我认为这可能是原因删除了这条线

//[moc setRetainsRegisteredObjects:YES];

但这无济于事。我想了解 Core Data 对象的 NSSet 上的所有对象方法是否会导致内存增加以及 sortedArrayUsingDescriptors 进行深度复制? 我知道这是一个浅拷贝,请确认,即使在使用 sortedArrayUsingDescriptors 获得的对象数组后,内存仍然保留的逻辑原因是什么。

【问题讨论】:

  • 首先你应该明确你的问题。此外,您应该以正确的方式对其进行格式化。那么,您是否使用ARC?最后,您在哪里看到这么大的内存占用?

标签: ios objective-c core-data nsfetchrequest nssortdescriptor


【解决方案1】:

正如我在评论中所述,您应该为您的问题提供一些背景信息。那么,您在 Instrument 中看到过这种行为吗?

无论如何,您可以根据特定谓词(如果我很好地理解您的问题,谓词将为您提供属于特定员工的部门)。这样排序是在 SQL 级别完成的。

您还应该提供您正在使用的相关代码

[tempArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

sortDescriptor 呢?如果你没有使用 ARC,你 alloc-init 一个新的 sortDescriptor 你必须释放它。否则会漏水。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 2010-12-14
    • 2016-03-12
    • 2011-10-19
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多