为什么不使用常规的@property而不是瞬态?我不关心支持撤销。
答案 0 :(得分:3)
如果你不需要撤销,那么普通的未建模@property很有可能会更好。将属性明确建模为瞬态时,主要区别在于:
Jakob Stoklund Olesen在https://web.archive.org/web/20160423093331/http://www.2pi.dk/tech/cocoa/transient_properties.html可以找到一些实验来计算瞬态建模属性的语义。因为这是一个垂死的archive.org链接,我将摘录一些选择花絮:
“瞬态属性......您应该将其视为持久存储中值为nil的。”
“那么什么是瞬态属性??[for]任何你不需要存储的属性,但是想要撤消支持。”
“另一种用途......是缓存无法存储的属性。具有不支持类型的跨存储关系和属性是典型示例。在保存之前,您将属性转换为可以存储的属性,并将其写入二进制'shadow'属性。“
“最好将瞬态属性想象为代表'持久存储中的nil',而不是使用undo'的常见'花式实例变量'。”
一篇好文章,我希望雅各布把它留下来。