Core data NSManagedObject:我应该使用transient还是常规@property?

Core data NSManagedObject:我应该使用transient还是常规@property?,core-data,nsmanagedobject,transient,Core Data,Nsmanagedobject,Transient,为什么不使用常规的@property而不是transient呢?我不在乎是否支持撤销。如果不需要撤销,那么普通的未建模@property很有可能更好。将特性显式建模为瞬态时,主要区别在于: 设置属性会将对象标记为脏对象,即使实际上不会保存任何内容 当对象变成故障时,清除该属性 根据您选择的合并策略,合并更改时可能会发生奇怪的事情 雅各布·斯托克朗德·奥列森(Jakob Stoklund Olesen)可能会在上找到一些关于瞬态建模属性语义的实验。因为那是一个垂死的archive.org链接,

为什么不使用常规的@property而不是transient呢?我不在乎是否支持撤销。

如果不需要撤销,那么普通的未建模@property很有可能更好。将特性显式建模为瞬态时,主要区别在于:

  • 设置属性会将对象标记为脏对象,即使实际上不会保存任何内容
  • 当对象变成故障时,清除该属性
  • 根据您选择的合并策略,合并更改时可能会发生奇怪的事情
雅各布·斯托克朗德·奥列森(Jakob Stoklund Olesen)可能会在上找到一些关于瞬态建模属性语义的实验。因为那是一个垂死的archive.org链接,我将摘录一些精选花絮:

  • “一个临时属性……您应该将其视为永久存储中值为零的对象。”

  • “那么瞬态属性对什么有好处?…[对于]任何不需要存储但希望撤消支持的属性。”

  • “另一个用途…是缓存无法存储的属性。交叉存储关系和不支持类型的属性是典型的例子。保存前,请将属性转换为可以存储的内容,并将其写入二进制“shadow”属性。”

  • “最好将瞬态属性想象为表示‘持久存储中为零的内容’,而不是常见的‘具有撤消功能的奇特实例变量’。”


这是一篇好文章,我真希望雅各布把它忘了。

标题中的“transformable”是“transient”的拼写错误吗?(我正在键入答案,假设是这样。)链接现在已断开:(