Iphone 存储NSManagedObjects或NSManagedObjects的NSArray更好吗?

Iphone 存储NSManagedObjects或NSManagedObjects的NSArray更好吗?,iphone,objective-c,memory,core-data,Iphone,Objective C,Memory,Core Data,在我的应用程序中,我需要跟踪正在显示的对象列表。现在我有一个NSManagedObject的NSArray。我是否最好存储objectid,然后只在需要时请求该对象 我现在主要关心的是记忆力 我现在主要关心的是记忆力 这里的第一个问题是,您并不真正理解内存是如何存储的。您的这个数组只保存指向对象的指针,而不是对象本身,因此保存NSManagedObjects vs ObjectId与指针大小相同 CoreData开发得相当成熟,并且有许多内部优化,用于在托管对象上下文中进行自动内存处理和故障处理

在我的应用程序中,我需要跟踪正在显示的对象列表。现在我有一个NSManagedObject的NSArray。我是否最好存储objectid,然后只在需要时请求该对象

我现在主要关心的是记忆力

我现在主要关心的是记忆力

这里的第一个问题是,您并不真正理解内存是如何存储的。您的这个数组只保存指向对象的指针,而不是对象本身,因此保存NSManagedObjects vs ObjectId与指针大小相同

CoreData开发得相当成熟,并且有许多内部优化,用于在托管对象上下文中进行自动内存处理和故障处理

考虑到这些信息,显然可以选择在数组中使用NSManagedObjects,因为以另一种方式使用不会带来任何好处,而以这种方式使用会减少检索它们的代码

我现在主要关心的是记忆力

这里的第一个问题是,您并不真正理解内存是如何存储的。您的这个数组只保存指向对象的指针,而不是对象本身,因此保存NSManagedObjects vs ObjectId与指针大小相同

CoreData开发得相当成熟,并且有许多内部优化,用于在托管对象上下文中进行自动内存处理和故障处理


考虑到这些信息,似乎明确的选择是在数组中使用NSManagedObjects,因为以另一种方式使用它不会带来任何好处,而且这样做会减少检索它们的代码量。

从我所做的阅读和测试中可以看出,只要对象至少有一个指向该对象的指针,该对象就会被保存在内存中。如果我存储了对象id,对象将自动释放,并且上下文可以在必要时自由释放它。我遗漏了什么吗?是的,您遗漏了一个事实,即核心数据将根据需要删除
NSManagedObject
的“内容”,以释放内存。例如,如果您有一个包含10000个
NSManagedObject
实例的列表,那么这些实例并不都在内存中。只有您现在正在使用的才是。最后,这一级别的内存优化应该在应用程序开发周期的后期进行;通常,当您知道自己有问题时,而不是尝试进行预优化。因此,即使有指向对象的指针,内容也会被删除?我想我的问题是错的。我会转载。从我所做的阅读和测试来看,只要至少有一个指向该对象的指针,该对象就会被保存在内存中。如果我存储了对象id,对象将自动释放,并且上下文可以在必要时自由释放它。我遗漏了什么吗?是的,您遗漏了一个事实,即核心数据将根据需要删除
NSManagedObject
的“内容”,以释放内存。例如,如果您有一个包含10000个
NSManagedObject
实例的列表,那么这些实例并不都在内存中。只有您现在正在使用的才是。最后,这一级别的内存优化应该在应用程序开发周期的后期进行;通常,当您知道自己有问题时,而不是尝试进行预优化。因此,即使有指向对象的指针,内容也会被删除?我想我的问题是错的。我会转载。