【发布时间】:2012-01-31 05:27:26
【问题描述】:
为什么不直接使用常规的@property 而不是瞬态的?我不在乎支持撤消。
【问题讨论】:
-
标题中的“transformable”是“transient”的错字吗? (假设是这样,我正在输入一个答案。)
标签: core-data nsmanagedobject transient
为什么不直接使用常规的@property 而不是瞬态的?我不在乎支持撤消。
【问题讨论】:
标签: core-data nsmanagedobject transient
如果您不需要撤消,那么一个普通的未建模 @property 很有可能会更好。将属性显式建模为瞬态时,主要区别在于:
可以在 Jakob Stoklund Olesen 的 https://web.archive.org/web/20160423093331/http://www.2pi.dk/tech/cocoa/transient_properties.html 上找到一些研究瞬态建模属性语义的实验。因为这是一个垂死的archive.org链接,所以我将摘录一些选择花絮:
“一个瞬态属性...您应该将其视为在持久存储中其值为 nil 的东西。”
“那么瞬态属性有什么用?...[适用于]您不需要存储但希望撤消支持的任何属性。”
“另一个用途……是缓存不能存储的属性。跨存储关系和不支持类型的属性就是典型的例子。在保存之前,将属性转换为可以存储的东西,并将其写入二进制 'shadow' 属性。”
“最好将瞬态属性想象为代表‘在持久存储中为 nil 的东西’,而不是常见的‘具有撤消功能的精美实例变量’。”
一篇很好的文章,我希望 Jakob 没有留下它。
【讨论】: