【发布时间】:2013-12-20 06:27:56
【问题描述】:
我只是好奇,想知道以下问题是否有“良好做法”的答案:
如果我在 Core Data 中有一个轻量级的 NSManagedObject 子类,其中对象将被频繁地创建和删除,并且子类本身相当简单(例如,一个关系,最少的属性),是否建议根据需要创建和删除实例还是根据需要设置和取消设置现有实例?
例如,假设我们有一个名为 Tag 的理论 NSManagedObject 子类,它与另一个子类 MyObject 有关系。 MyObject 可以有许多 Tag 对象,但每个 Tag 最多有一个 MyObject 对象。 Tag 有一个属性,text,它是一个用户设置的 NSString。
在上述情况下,我可以想到两种不同的实现方式:
-
创建和销毁:当您需要一个新的
Tag时,您可以创建一个新的Tag。当你想删除Tag时,你可以从 Core Data 中删除它。 -
更新和重用:当您需要一个新的
Tag时,您首先使用text = nil搜索现有的Tag对象,如果所有现有的Tag对象都已创建,则仅创建一个新的Tag对象用过的。当您想要移除Tag时,您需要移除它与其MyObject对象的关系并设置text = nil。
“创建和销毁”似乎更简单,并且占用的空间完全符合它的需要,但“更新和重用”可以最大限度地减少删除和创建对象的次数。 (我会想象删除save 上的备用Tag 对象并跟踪未设置的Tag 对象,这样您就不必每次都从Core Data 中获取。)
您会推荐哪种实现方式?有没有我没有想到的不同实现?我是否提出了错误的问题/没有提供足够的详细信息?
我想我可以制作一个示例 Xcode 项目并自己进行测试,但我猜您将获得更明智的意见/更多经验,而不仅仅是针对时间和内存进行优化。
【问题讨论】:
标签: ios objective-c cocoa-touch cocoa core-data