3

谁能向我解释 NSAttributedString 如何正确遵循 MVC 范式?我知道它不是从 NSString 继承的,但它仍然是一个字符串,所以我会说这是我模型的一部分。但是,在谈论 MVC 时,设置 UI 属性(例如下划线、字体、阴影等)显然是 View 的一部分,所以我不太确定这是如何遵循规则的。

4

2 回答 2

9

NSAttributedString 是一个模型类。

它只是具有属性字符串的表示。

仅仅因为它存储了属性,所以它不负责属性的显示。

想象一下,你有一个自定义的形状类。如果您有一个正方形并存储了它的颜色,它仍然是一个模型对象,因为由呈现视图来绘制正方形并用颜色填充它,模型对象只是存储属性的地方。

于 2013-02-04T17:15:55.813 回答
2

NSAttributedString提供基础设施并且是 Cocoa 的样式化文本模型类的超类,NSTextStorage. AnNSTextStorage只是一个NSAttributedString可以与布局管理器交谈并在编辑方面做一些簿记/便利方法的人。

控制器职责由 处理NSLayoutManager。其中很多与将 unicode 字符串转换为字形、样式化它们以及进行各种几何计算有关。它针对NSTextContainer对象执行所有这些操作,这些对象(在基类的情况下)只是花哨NSSize的,布局管理器可以用来计算字形应该在哪里描边,应该在哪里发生换行等等。

Cocoa 的样式文本视图类是NSText及其子类,与标尺、字体和颜色面板一起使用。 NSTextView是一个NSText子类,并且NSCells共享一个NSText对象来编辑它们的内容。 NSText是一个NSResponder并且它接受其 textStorage 和 layoutManager 的文本编辑消息(如果存在)。

于 2013-02-04T19:46:27.010 回答