谁能向我解释 NSAttributedString 如何正确遵循 MVC 范式?我知道它不是从 NSString 继承的,但它仍然是一个字符串,所以我会说这是我模型的一部分。但是,在谈论 MVC 时,设置 UI 属性(例如下划线、字体、阴影等)显然是 View 的一部分,所以我不太确定这是如何遵循规则的。
2 回答
NSAttributedString 是一个模型类。
它只是具有属性字符串的表示。
仅仅因为它存储了属性,所以它不负责属性的显示。
想象一下,你有一个自定义的形状类。如果您有一个正方形并存储了它的颜色,它仍然是一个模型对象,因为由呈现视图来绘制正方形并用颜色填充它,模型对象只是存储属性的地方。
NSAttributedString
提供基础设施并且是 Cocoa 的样式化文本模型类的超类,NSTextStorage
. AnNSTextStorage
只是一个NSAttributedString
可以与布局管理器交谈并在编辑方面做一些簿记/便利方法的人。
控制器职责由 处理NSLayoutManager
。其中很多与将 unicode 字符串转换为字形、样式化它们以及进行各种几何计算有关。它针对NSTextContainer
对象执行所有这些操作,这些对象(在基类的情况下)只是花哨NSSize
的,布局管理器可以用来计算字形应该在哪里描边,应该在哪里发生换行等等。
Cocoa 的样式文本视图类是NSText
及其子类,与标尺、字体和颜色面板一起使用。 NSTextView
是一个NSText
子类,并且NSCells
共享一个NSText
对象来编辑它们的内容。 NSText
是一个NSResponder
并且它接受其 textStorage 和 layoutManager 的文本编辑消息(如果存在)。