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